Как превратить этот простой SQL-запрос в оператор Linq? - PullRequest
0 голосов
/ 10 июня 2011

У меня есть следующий оператор SQL, который просматривает таблицу и выбирает группу результатов на основе определения данных.Из этой группы я получаю единственный результат с самой высокой ревизией для этой группы.Теперь SQL был легок, но его перевод на Linq до сих пор не дал ничего, что я мог бы использовать.Может ли кто-нибудь помочь с этим?

select * from datasheet ds where ds.revisionnum = 
(select max(revisionnum) from datasheet where datadefinitionid = 34) 
       and ds.isparent = 1  -- is parent will be true for this query

Это примерно столько, сколько я получил с заявлением Linq, прежде чем я наткнулся:

var query = from ds in context.DataSheets 
             where ds.IsParent == true 
             && ds.RevisionNum  --- ?????

Заранее спасибо!

Обновление кода

Поработав некоторое время, мы пришли к следующему:

var dataSheet = _dataSheetRepository.All.Where(
                            d => d.DataDefinitionID == i.ID &&
                            d.IsParent == true);

var currentDataSheet = (from ds in dataSheet
                        where (ds.RevisionNum == (from s in dataSheet select
                        s.RevisionNum).Max()) select ds).SingleOrDefault();

Использование двух переменных дало нам возможность сузить, какой листколлекцию, которую мы искали, и затем, используя запрос linq для второй переменной, мы смогли сузить, какой реальный номер ревизии той коллекции мы хотели.

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

попробуй что-нибудь подобное

var query = from ds in context.DataSheets 
             where ds.IsParent == true 
             && ds.RevisionNum == context.DataSheets.Where(
                                  ds => ds.DataDefinitionId == 34).Max(
                                  ds => ds.RevisionNum)

подзапрос также может быть преобразован в выражение linq

0 голосов
/ 10 июня 2011

Могу ли я порекомендовать инструмент http://www.linqpad.net/

Он отлично подходит для создания и тестирования выражений linq для веб-служб sql и Odata.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...