繁体   English   中英

System.linq-GroupBy和Max

[英]System.linq - GroupBy and Max

如何结合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> 

按版本号订购每个组,然后仅选择第一个文档(它将具有最大版本号):

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

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

您可以对其进行排序,并获得结果的第一个元素,例如:

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

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

.GroupBy(x=>x.Name).Select(y=>y.OrderbyDescending(z=>z.Version).FirstorDefault());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM