2014-08-28 55 views
0
EmployeeName EmployeeNumber AllowanceName Amount 

ABDEL   002285   Housing   100.00 
ABDEL   002285   Tickets   12.083 
ABDEL   002285   Transportation 100.00 
MOHAMED   001546   Tickets   150.00 
MOHAMED   001546   Transportation 0.935 

我需要這個平表轉換成交叉表的表是這樣的通用分組使用LINQ

EmployeeName EmployeeNumber  Housing Tickets Transportation 

ABDEL   002285    100.00 12.083 100.00 
MOHAMED   001546    0.000 150.00 0.935 
+0

你是如何最終顯示此?有一些UI和報告控件比Linq更能動態地處理數據透視表。 – 2014-08-28 12:42:49

+0

您應該規範化該表。 'AllowanceName'應該是另一個表的外鍵。 – 2014-08-28 13:01:12

回答

0

不是真的一般,但也許足夠了:

var query = empmloyee 
    .GroupBy(x => new { x.EmployeeName, x.EmployeeNumber }) 
    .Select(gx => new { 
     EmployeeName = gx.Key.EmployeeName, 
     EmployeeNumber = gx.Key.EmployeeNumber, 
     Housing  = gx.Where(x => x.AllowanceName == "Housing") 
          .Sum(x => x.Amount), 
     Tickets  = gx.Where(x => x.AllowanceName == "Tickets") 
          .Sum(x => x.Amount), 
     Transportation = gx.Where(x => x.AllowanceName == "Transportation") 
          .Sum(x => x.Amount), 
    });