2014-05-20 74 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。