[英]How to find the maximum value for each key in a List of Dictionaries using LINQ?
我有一個字典列表,其中包含字符串類型和值為int的鍵。
許多詞典中都有相同的鍵,但不是全部。
所以我的問題是:使用LINQ如何在所有字典中找到與每個不同鍵相關聯的最大值?
例如,給出以下輸入:
var data = new List<Dictionary<string, int>>
{
new Dictionary<string, int> {{"alpha", 4}, {"gorilla", 2}, {"gamma", 3}},
new Dictionary<string, int> {{"alpha", 1}, {"beta", 3}, {"gamma", 1}},
new Dictionary<string, int> {{"monkey", 2}, {"beta", 2}, {"gamma", 2}},
};
我想要某種包含以下內容的集合:
{"alpha", 4},
{"gorilla", 2},
{"gamma", 3},
{"beta", 3},
{"monkey", 2}
(我現在正在遍歷列表並自己跟蹤事物,真的只是想知道是否有更好的LINQ式方式)
編輯:我也不知道字符串鍵是什么提前
var results = data.SelectMany(d => d)
.GroupBy(d => d.Key)
.Select(g => new
{
GroupName = g.Key,
MaxValue = g.Max(i => i.Value)
});
並測試以上,使用此
foreach (var item in results)
{
Console.WriteLine(item);
}
獲得以下輸出...
{ GroupName = alpha, MaxValue = 4 }
{ GroupName = gorilla, MaxValue = 2 }
{ GroupName = gamma, MaxValue = 3 }
{ GroupName = beta, MaxValue = 3 }
{ GroupName = monkey, MaxValue = 2 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.