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

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

我需要这些数据:“猫”--2,“狗”--1,“马”--1

最佳答案

你需要做一个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());

关于c# 对列表进行分组并获取每组的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36298123/

相关文章:

c# - 如何为 ContextMenuStrip 项设置图像?

c# - 在 ORM 中将 lambda 表达式转换为 SQL?

java - 在Java中将数组转换为列表

C++ 列表 Unique() 函数

c# - 您需要 c# 才能使用 wcf-soap 吗?

抽象类特定代码的 C# 模式

c# - 搜索并替换具有多个属性的对象中的值......C#

c# - 使用带有 System.Xml.Linq 的 XElement 将不同的 xml 命名空间重新定义为现有别名时出错

c# - 检查 LINQ 查询是否返回行

java - 如何从两个数组列表中删除公共(public)值