簡體   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