Я искал в архивах, но не могу найти решение этой проблемы.Я пытаюсь просто сгруппировать коллекцию сущностей по UniqueId , затем отсортировать по RevisionNumber и вернуть сущность с наибольшим RevisionNumber для каждого UniqueId.
Так что дляпример данных,
[UniqueId, RevisionNumber]
[1, 1]
[1, 2]
[1, 3]
[1, 4]
[2, 1]
[2, 2]
[2, 3]
Результирующая коллекция вернет
[1, 4]
[2, 3]
Кто-нибудь видит, как объединить два приведенных ниже оператора в один запрос linq, который сортирует коллекцию, группирует ее ивозвращает спроецированный объект DTO только для самой высокой ревизии для каждого уникального идентификатора?
Спасибо!
private static IEnumerable<RevisionDto> ExtractHighestRevisions(IEnumerable<RevisionEntity> revisions)
{
var groupedRevisions = (from r in revisions
orderby r.RevisionNumber descending
group r by r.UniqueId
into grp
select grp.OrderByDescending(g => g.RevisionNumber).FirstOrDefault());
return (from r in groupedRevisions
orderby r.RevisionNumber
select new RevisionDto
{
// other properties omitted for clarity
UniqueId = r.UniqueId,
RevisionNumber = r.RevisionNumber
});
}