LINQ - 使用类型计数对对象进行分组

标签 linq grouping aggregate

我有一个对象集合,每个对象都由特定的“组”定义。如何编写 LINQ 查询来生成按“组”分组的每个对象的计数。

举个例子,假设我有以下类(class);

public class Release 
{
     int ReleaseNumber; 

     public ReleaseDetails[] details;

}

public class ReleaseDetails
{
    string Group;

    // other details omitted
}

对于给定的版本,我希望能够生成如下输出:

Release number 1 contains the following details;
 - 17 records in Group A
 - 12 records in Group B
 - 6 records in Group C

非常感谢任何帮助。

最佳答案

你可以做类似的事情

var q = from d in r.Details
            group d by d.Group into counts
            select new { Count = counts.Count(), Group = counts.Key };

完整示例:

        Release r = new Release
        {
            ReleaseNumber = 1
            ,
            Details = new ReleaseDetails[]
            {
                new ReleaseDetails { Group = "a"},
                new ReleaseDetails { Group = "a"},
                new ReleaseDetails { Group = "b"},
                new ReleaseDetails { Group = "c"},
                new ReleaseDetails { Group = "d"},
                new ReleaseDetails { Group = "d"},
                new ReleaseDetails { Group = "e"},

            }
        };

        var q = from d in r.Details
                group d by d.Group into counts
                select new { Count = counts.Count(), Group = counts.Key };

        foreach (var count in q)
        {
            Console.WriteLine("Group {0}: {1}", count.Group, count.Count);
        }

关于LINQ - 使用类型计数对对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660141/

相关文章:

c# - 有没有一种简单的方法可以通过非交换操作进行并行聚合?

python 根据前后单词进行单词分组

domain-driven-design - 处理跨聚合关系中的事件和聚合状态

c# - 对 DataTable.DataSource 的 LINQ 查询

c# - 在 Linq 中删除查询

相关项目分组算法

python - 将元组列表拆分为同一元组字段的子列表

mysql - 如何使聚合查询返回空集而不是 NULL 行?

c# - 存储库/服务层设计模式的建议

c# - 在 LINQ 查询期间获取行中的最小值