LINQ를 사용하여 데이터 피벗
데이터 처리에서 피벗이란 데이터를 여러 열과 행이 포함된 형식에서 여러 개가 포함된 형식으로 변환하는 것을 의미합니다. 행과 열. LINQ를 사용하여 데이터 피벗을 수행하는 방법은 다음과 같습니다.
TypeCode 열거형과 User 개체가 포함된 항목 컬렉션을 생각해 보세요. 문의에 설명된 대로, 제공된 샘플 데이터에 표시된 대로 컬렉션을 평면화하고 격자형 구조로 표시하려고 합니다.
TypeCode | User |
---|---|
1 | Don Smith |
1 | Mike Jones |
1 | James Ray |
2 | Tom Rizzo |
2 | Alex Homes |
3 | Andy Bates |
원하는 출력은 다음과 같습니다.
1 | 2 | 3 |
---|---|---|
Don Smith | Tom Rizzo | Andy Bates |
Mike Jones | Alex Homes | |
James Ray |
LINQ 솔루션:
LINQ는 이러한 유형의 피벗 작업을 효율적으로 처리할 수 있습니다. 다음은 방법을 보여주는 코드 조각입니다.
// Sample data var data = new[] { new { Foo = 1, Bar = "Don Smith"}, new { Foo = 1, Bar = "Mike Jones"}, new { Foo = 1, Bar = "James Ray"}, new { Foo = 2, Bar = "Tom Rizzo"}, new { Foo = 2, Bar = "Alex Homes"}, new { Foo = 3, Bar = "Andy Bates"}, }; // Group into columns and select rows per column var grps = from d in data group d by d.Foo into grp select new { Foo = grp.Key, Bars = grp.Select(d2 => d2.Bar).ToArray() }; // Find the total number of (data) rows int rows = grps.Max(grp => grp.Bars.Length); // Output columns foreach (var grp in grps) { Console.Write(grp.Foo + "\t"); } Console.WriteLine(); // Output data for (int i = 0; i < rows; i++) { foreach (var grp in grps) { Console.Write((i < grp.Bars.Length ? grp.Bars[i] : null) + "\t"); } Console.WriteLine(); }
출력:
1 2 3
Don Smith Tom Rizzo Andy Bates
Mike Jones Alex Homes
James Ray
이 LINQ 솔루션 동일한 Foo 값을 가진 항목을 그룹화한 다음 열당 막대(사용자 이름)를 선택하여 데이터를 원하는 형식으로 효과적으로 피벗합니다. 각 열의 항목을 기준으로 최대 행 수를 계산하고 잘 구성된 테이블 형식으로 출력을 생성합니다.
위 내용은 LINQ를 사용하여 데이터를 어떻게 피벗할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!