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

spo*_*123 2 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);
Run Code Online (Sandbox Code Playgroud)

我需要这个数据:"猫" - 2,"狗" - 1,"马" - 1

oct*_*ccl 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);
Run Code Online (Sandbox Code Playgroud)

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

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