C#如何对列表进行分组,并获得每个组的数量统计。

3

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

        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);

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

使用Linq,查看GroupBy扩展方法。例如:list.GroupBy(x => x) - Nathan White
2个回答

6

您需要进行分组操作:

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());

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()}) ; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接