按列多列linq计数嵌套行

时间:2014-05-20 01:49:17

标签: c# linq

我有一个表需要填充记录,如下所示。每条记录都有一个div,bus和dept,以及一个状态代码,即Entered,Progress和Finished。

Div Bus Dept    Entered Progress    Finished
Com XYZ Credit  1   1   1
Con DBD Fraud   2   5   3
Con AAA Call C  5   55  2
Com BBB Auth    1   4   3
Com AAA AES 8   1   1
Con XYZ Collection  1   1   1

Con         12  3   5
Com         5   1   7

有一个名为status的列,可以是Entered,Progress或Finished。我需要一种按Div,Bus,Dept分组的方法,并计算每条记录的状态,然后总结每个部门的代码,如上所示。 我尝试过以下linq查询

var records = records.GroupBy(x=>new {x.Div, x.Bus,x.Dept,x.Status.Count()};

我不确定在哪里接受查询,我在使用linq进行分组方面不太强大。

1 个答案:

答案 0 :(得分:11)

records
    .GroupBy(x => new { x.Div, x.Bus, x.Dept })
    .Select(g => new 
        { 
            g.Key.Div, 
            g.Key.Bus, 
            g.Key.Dept, 
            Entered = g.Count(r => r.Status == Entered),
            Progress= g.Count(r => r.Status == Progress),
            Finished= g.Count(r => r.Status == Finished),
        });
如果您来自SQL背景,

SQL queries in LINQ可以帮助您更熟悉LINQ。