У меня есть следующий оператор 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 для второй переменной, мы смогли сузить, какой реальный номер ревизии той коллекции мы хотели.