Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya Boleh Mengubah Data Menggunakan LINQ?

Bagaimanakah saya Boleh Mengubah Data Menggunakan LINQ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 22:05:41458semak imbas

How Can I Pivot Data Using LINQ?

Data Pangsi Menggunakan LINQ

Dalam pemprosesan data, pangsi merujuk kepada menukar data daripada format dengan berbilang lajur dan baris kepada format dengan berbilang baris dan lajur. Begini cara anda boleh melakukan pangsi data menggunakan LINQ:

Pertimbangkan koleksi item yang mengandungi enum TypeCode dan objek Pengguna. Seperti yang diterangkan oleh pertanyaan, anda ingin meratakan koleksi dan membentangkannya dalam struktur seperti grid, seperti yang ditunjukkan dalam data sampel yang disediakan:

TypeCode User
1 Don Smith
1 Mike Jones
1 James Ray
2 Tom Rizzo
2 Alex Homes
3 Andy Bates

Output yang dikehendaki ialah:

1 2 3
Don Smith Tom Rizzo Andy Bates
Mike Jones Alex Homes
James Ray

Penyelesaian LINQ:

LINQ boleh mengendalikan operasi berputar jenis ini dengan cekap. Berikut ialah coretan kod yang menunjukkan cara:

// 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();
}

Output:

1 2 3
Don Smith Tom Rizzo Andy Bates
Mike Jones Alex Homes
James Ray

Penyelesaian LINQ ini dengan berkesan memutar data ke dalam format yang diingini dengan mengumpulkan item dengan nilai Foo yang sama dan kemudian memilih Bar (nama pengguna) setiap lajur. Ia mengira bilangan maksimum baris berdasarkan entri dalam setiap lajur dan menjana output dalam bentuk jadual yang tersusun dengan baik.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mengubah Data Menggunakan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn