簡體   English   中英

如何使用LinQ獲取按值分組的字典中的鍵列表

[英]How to get list of keys in a dictionary with group by value with using LinQ

好吧,這里有個簡單的字典

Dictionary<string,int> dicClusters=new Dictionary<string,int>();

dicClusters.Add("A",1);
dicClusters.Add("B",1);
dicClusters.Add("C",2);
dicClusters.Add("D",3);

所以我想從這里撰寫如下列表

  List<List<string>> lstGroupedByKeys=dicClusters.GroupBy(pr => pr.Value)...

結果將是

first list {"A","B"}
second list {"C"}
third list {"D"}

我可以使用多個foreach或使用for循環對其進行編碼,但是我相信可以使用linQ完成,並且我想學習ty

C#.NET 4.5.2

GroupBy是正確的做法,但是您需要另一個Select來定義每個組的表示方式:

List<List<string>> lstGroupedByKeys =
    dicClusters.GroupBy(pr => pr.Value)
               .Select(g => g.Select(pr => pr.Key).ToList())
               .ToList();

或者您可以使用其他GroupBy重載:

List<List<string>> lstGroupedByKeys =
    dicClusters.GroupBy(pr => pr.Value, pr => pr.Key, (k, g) => g.ToList())
               .ToList();

使用基於語法的查詢時,它可能更干凈:

var lstGroupedByKeys = (from pr in dicClusters
                        group pr.Key by pr.Value into g
                        select g.ToList()).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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