首頁 > 後端開發 > C++ > 如何使用 LINQ 透視資料?

如何使用 LINQ 透視資料?

Mary-Kate Olsen
發布: 2025-01-05 22:05:41
原創
510 人瀏覽過

How Can I Pivot Data Using LINQ?

使用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 值的項目分組,然後選擇每列的 Bar(使用者名稱),將資料轉換為所需的格式。它根據每列中的條目計算最大行數,並以結構良好的表格形式產生輸出。

以上是如何使用 LINQ 透視資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板