2013-07-29 1 views
0

나는 아래의 형식으로 레코드를 가지고 있으며 linq을 사용하여 피벗하고 싶습니다. Linq를 사용하여 데이터를 피벗하는 방법을 알려주십시오.변종 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, 이것이 좋은 해결책입니다. 마지막으로 새 열을 사용하여 (P (A, HP)와 같은 attflag 수)를 계산하고 싶습니다. 어떻게해야합니까 .. –

+2

새로운 질문을 작성하고 지금까지 시도한 것을 게시하십시오. –