Heim >Backend-Entwicklung >C++ >Wie kann ich Daten mit LINQ Pivotieren?
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!