【发布时间】:2011-03-30 23:32:04
【问题描述】:
我已经搜索了档案,但找不到解决方案。我试图简单地按 UniqueId 对实体集合进行分组,然后按 RevisionNumber 排序并返回每个 UniqueId 具有最高 RevisionNumber 的实体。
所以对于样本数据,
[UniqueId, RevisionNumber]
[1, 1]
[1, 2]
[1, 3]
[1, 4]
[2, 1]
[2, 2]
[2, 3]
结果集合将返回
[1, 4]
[2, 3]
有谁知道如何将下面的两个语句组合成一个 linq 查询,对集合进行排序、分组,并仅返回每个唯一 ID 的最高修订版本的投影 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
});
}
【问题讨论】:
标签: c# linq-to-entities