1

如何结合 groupBy 和 max?我想按名称分组并仅获取最新版本。像这样的东西

Docs.GroupBy(x => x.Name ).Max(x => x.VersionNumber)

可能吗?

以下

searchResult.Docs.GroupBy(x => x.PackageName).Select(x => x.Max(x => x.VersionNumber));

返回一个

 IEnumerable<int> 

并不是

 IEnumerable<Doc> 
4

3 回答 3

2

按版本号对每个组进行排序并仅选择第一个文档(它将具有最大版本号):

Docs.GroupBy(x => x.Name)
    .Select(g => g.OrderByDescending(x => x.VersionNumber).First())

您的代码不起作用,因为您正在选择最大版本号的值(即 int),而不是选择具有最大版本号的 doc。

于 2013-09-11T12:15:35.467 回答
0

您可以订购它并获得结果的第一个元素,例如:

searchResult.Docs.GroupBy(x => x.PackageName).OrderByDescending(x => x.Max(x => x.VersionNumber)).FirstOrDefault();
于 2013-09-11T12:15:55.183 回答
0

为了获取组的最新元素,查询是:

.GroupBy(x=>x.Name).Select(y=>y.OrderbyDescending(z=>z.Version).FirstorDefault());
于 2013-09-11T13:25:21.837 回答