2013-07-29 48 views
0

我有以下格式的記錄,我想使用linq進行數據透視,請幫助我如何使用Linq來轉發數據。TRANSFORM Pivot usin Linq

Records

Result

+0

複製http://stackoverflow.com/questions/14495124/how-to-build-pivot-table -through-linq-using-c-sharp? – Nithesh

+0

你的意思是轉置? – ViSu

+0

@ViSu:使用Linq的樞軸 –

回答

1

我想嘗試這樣的事:

var userIds = table.Select(row => row.userid).Distinct(); 
var checkTimes = table.Select(row => row.CheckTime).Distinct(); 

var pivotTable = 
    from userid in userIds 
    select new { 
     userid, 
     attflags = checkTimes.Select(checkTime => 
      table.Where(row => row.userid == userid && row.CheckTime == checkTime) 
       .Select(row => row.attflag) 
       .DefaultIfEmpty("-") 
       .FirstOrDefault()) 
    }; 

Console.WriteLine("userid\t" + String.Join("\t", checkTimes)); 
foreach (var pivotRow in pivotTable) 
    Console.WriteLine(pivotRow.userid + "\t" + String.Join("\t", pivotRow.attflags)); 
+0

非常感謝Andrew,這是一個很好的解決方案,我希望在最後列出新列時總結(attflag計數(P,A,HP))。如何做請.. –

+2

創建一個新的問題,併發布你到目前爲止嘗試過的。 –