2014-05-20 46 views
4

我有一个表需要填充记录,如下所示。每条记录都有一个div,总线和部门,以及一个状态码,可以是输入,进度和完成。按多列分组LINQ计数嵌套行

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 

有一个称为状态的列,可以是输入,进度或完成。我需要一种按Div,Bus,Dept进行分组的方法,并计算每条记录的状态,然后汇总每个部门的代码,如上所示,如上所示。 我已经试过以下LINQ查询

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

我不知道还有什么地方需要查询,我不是使用LINQ分组太强。

回答

8
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 queries in LINQ如果您来自SQL背景,可以帮助您更加熟悉LINQ。