好的,这是一个简单的字典
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();
https://stackoverflow.com/questions/32428602/