У меня есть следующий SQL:Преобразовать этот SQL-запрос к Expression Linq лямбды
select Monitor.* from Monitor
left join Queue on Queue.MonitorID = Monitor.MonitorID
and Queue.QueueID = (select top 1 Queue.QueueID from Queue where Queue.MonitorID = Monitor.MonitorID order by Queue.Created)
where Queue.Created is null or Queue.Created < 'DateTimeValue'
Этот запрос выбирает все «Мониторы», чьи очередь просрочен или отсутствуют, если вы можете думать о более эффективных способах при получении этой информации это тоже будет хорошо.
Результаты этого запроса являются просроченными товарами, которые необходимо запустить. Я использую EF6.
Я пытаюсь преобразовать это из SQL в Linq Lambdas, я попробовал Linqer, но он, похоже, не выводит примеры Lambda, или я не могу найти настройки, чтобы это произошло.
Итак, может ли кто-нибудь помочь мне в преобразовании этого запроса и предложить улучшения, если они есть? Я знаю, что подзапрос - это убийца производительности ...
Как только я это увижу, как только почувствую, что смогу изучить синтаксис.
Я специально искал примеры этого присоединиться к синтаксису в Linq/лямбды
Мне любопытно, что у вас есть рабочий запрос, почему бы просто не запросить базу данных с этим, а не использовать LINQ? – user2366842
Я смущен, потому что ваш исходный запрос выглядит неправильно. Разве JOIN не должен находиться на 'Queue.MonitorID = Monitor.MonitorID'? –
Исправлен исходный запрос typo thanks! – somedev