c#对列表进行分组并获取每个组的计数

时间:2016-03-30 01:37:34

标签: c# linq list

我有一个包含多个相同值条目的字符串列表。我需要获取列表中的所有唯一元素以及每个唯一元素组的计数。 例如:

        string a = "cat";
        string b = "dog";
        string c = "cat";
        string d = "horse";

        List<string> list = new List<string>();

        list.Add(a);
        list.Add(b);
        list.Add(c);
        list.Add(d);

我需要这些数据:&#34; cat&#34; - 2,&#34; dog&#34; - 1,&#34; horse&#34; - 1

2 个答案:

答案 0 :(得分:5)

你需要做一个GroupBy:

var result=list.GroupBy(s=>s).Select(g=>new{Animal=g.Key, Count=g.Count()});
foreach(var e in result)
   Console.WriteLine("{0}--{1}",e.Animal,e.Count);

如果您愿意,也可以删除对Select扩展程序的调用:

var result=list.GroupBy(s=>s);
foreach(var g in result)
   Console.WriteLine("{0}--{1}",g.Key,g.Count());

答案 1 :(得分:0)

 List<string> list = new List<string>() { "cat", "dog", "cat", "horse" };
 var groupedResult = list.GroupBy(x => x).Select(y=> new{item = y.Key , count=y.Count()}) ;