[英]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.