簡體   English   中英

如何使用LINQ查找詞典列表中每個鍵的最大值?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM