Форум программистов, компьютерный форум, киберфорум
Наши страницы
LINQ
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Melendil
0 / 0 / 0
Регистрация: 30.08.2016
Сообщений: 9
#1

Переписать SQL запрос в LINQ запрос

05.06.2017, 13:27. Просмотров 977. Ответов 4
Метки нет (Все метки)

День добрый всем.

Подскажите, пожалуйста, как можно преобразовать запрос:
SQL
1
2
3
SELECT Price * (SELECT COUNT(SeatNumber) FROM OrderDetails WHERE OrderId = 20016)
FROM Sessions 
WHERE SessionId = (SELECT SessionId FROM [ORDER] WHERE OrderId = 20016)
в LINQ запрос?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2017, 13:27
Ответы с готовыми решениями:

Переписать запрос SQL на LINQ
всем доброго времени суток! помогите написать запрос на LINQ вот он на MS...

SQL запрос в LINQ
Я не понимаю как перобразовать такой SQL-запрос для MS SQL SELECT * FROM...

Перевести SQL запрос в LINQ
Доброе время суток! Вот до этого времени не сталкивался с Join в LINQ....

Перевести запрос с SQL в LINQ
Доброго времени суток, требуется помощь в переводе запроса с SQL в LINQ, кто...

Перевести SQL-запрос в LINQ
Ребят помогите понять как будет такой запрос выглядить на linq: SELECT...

4
OwenGlendower
Супер-модератор
Эксперт .NET
8900 / 7902 / 3375
Регистрация: 17.03.2014
Сообщений: 15,572
Записей в блоге: 1
05.06.2017, 14:00 #2
Melendil, так по идее
C#
1
2
3
var result = from session in ctx.Sessions
where session.SessionId == ctx.Orders.Single(o => o.Id == 20016).SessionId
select session.Price * ctx.OrderDetails.Where(o => o.Id == 20016).Count();
0
Melendil
0 / 0 / 0
Регистрация: 30.08.2016
Сообщений: 9
05.06.2017, 14:16  [ТС] #3
Добавлено через 6 минут
OwenGlendower,
Согласен с Вами, у меня получился почти такой же вариант

C#
1
2
3
4
5
6
7
var price =Convert.ToDecimal(from s in _dbModel.Sessions
where s.SessionId == (from o in _dbModel.Orders
where o.OrderId == orderId
select o.SessionId).FirstOrDefault()
select s.Price * (from o in _dbModel.OrderDetails
where o.OrderId == orderId
select o.SeatNumber).Count());
НО на выходе ошибка:
Не удалось привести тип объекта "System.Data.Entity.Infrastructure.DbQuery`1[System.Nullable`1[System.Decimal]]" к типу "System.IConvertible"

Может подскажете, как быть?
0
OwenGlendower
Супер-модератор
Эксперт .NET
8900 / 7902 / 3375
Регистрация: 17.03.2014
Сообщений: 15,572
Записей в блоге: 1
05.06.2017, 14:43 #4
Лучший ответ Сообщение было отмечено Melendil как решение

Решение

Melendil, LINQ запрос возвращает коллекцию. Если точно известно что результат будет один, то укажи это
C#
1
2
3
4
5
var price = (
    from s in _dbModel.Sessions
    where s.SessionId == (from o in _dbModel.Orders where o.OrderId == orderId select o.SessionId).FirstOrDefault()
    select s.Price * (from o in _dbModel.OrderDetails where o.OrderId == orderId select o.SeatNumber).Count()
).First();
0
Melendil
0 / 0 / 0
Регистрация: 30.08.2016
Сообщений: 9
05.06.2017, 14:49  [ТС] #5
OwenGlendower, Спасибо огромное
0
05.06.2017, 14:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 14:49

Запрос SQL записать в виде LINQ To Entities
Написал запрос на SQL: select * from Fuel_way inner Join Fuel on...

Как будет выглядеть SQL запрос в LINQ?
SELECT .OrdCount, .OrdInDate, Zak.ZakName FROM Zak INNER JOIN ...

Есть запрос в SQL какой можно сделать аналог в LINQ
SELECT d.title, a.route_grp FROM route a JOIN schedule b ON a.schedule_id =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru