Heim >Backend-Entwicklung >C++ >Wie kann ich Daten mit LINQ Pivotieren?

Wie kann ich Daten mit LINQ Pivotieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 22:05:41458Durchsuche

How Can I Pivot Data Using LINQ?

Pivotieren von Daten mit LINQ

In der Datenverarbeitung bezieht sich Pivotieren auf die Umwandlung von Daten aus einem Format mit mehreren Spalten und Zeilen in ein Format mit mehreren Zeilen und Spalten. So können Sie mit LINQ eine Daten-Pivotierung durchführen:

Stellen Sie sich eine Sammlung von Elementen vor, die eine TypeCode-Enumeration und ein User-Objekt enthält. Wie in der Anfrage beschrieben, möchten Sie die Sammlung reduzieren und in einer gitterartigen Struktur präsentieren, wie in den bereitgestellten Beispieldaten gezeigt:

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

Die gewünschte Ausgabe wäre:

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

LINQ-Lösung:

LINQ kann diese Art von Schwenkvorgang effizient verarbeiten. Hier ist ein Codeausschnitt, der zeigt, wie:

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

Ausgabe:

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

Diese LINQ-Lösung dreht die Daten effektiv in das gewünschte Format, indem Sie Elemente mit demselben Foo-Wert gruppieren und dann die Balken (Benutzernamen) pro Spalte auswählen. Es berechnet die maximale Anzahl von Zeilen basierend auf den Einträgen in jeder Spalte und generiert die Ausgabe in einer gut strukturierten Tabellenform.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten mit LINQ Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn