Ich frage mich, ob es möglich ist, mit LINQ Daten aus dem folgenden Layout zu schwenken:
CustID | OrderDate | Qty
1 | 1/1/2008 | 100
2 | 1/2/2008 | 200
1 | 2/2/2008 | 350
2 | 2/28/2008 | 221
1 | 3/12/2008 | 250
2 | 3/15/2008 | 2150
in so etwas:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
linq
pivot-table
Tim Lentine
quelle
quelle
Ich habe eine ähnliche Frage mit der Linq-Erweiterungsmethode beantwortet :
(+) generische Implementierung
(-) definitiv langsamer als die von Amy B.
Kann jemand meine Implementierung verbessern (dh die Methode führt die Reihenfolge der Spalten und Zeilen durch)?
quelle
Ich denke, der beste Ansatz hierfür ist die Verwendung einer Suche:
quelle
Hier ist eine etwas allgemeinere Methode zum Schwenken von Daten mit LINQ:
Dabei ist ValueKey eine spezielle Klasse, die einen mehrdimensionalen Schlüssel darstellt:
Dieser Ansatz kann zur Gruppierung nach N-Dimensionen (n> 2) verwendet werden und funktioniert gut für relativ kleine Datensätze. Für große Datenmengen (bis zu 1 Mio. Datensätze und mehr) oder für Fälle, in denen die Pivot-Konfiguration nicht fest codiert werden kann, habe ich eine spezielle PivotData- Bibliothek geschrieben (kostenlos):
quelle
Dies ist der effizienteste Weg:
Überprüfen Sie den folgenden Ansatz. Anstatt die Kundengruppe jedes Mal für jeden Monat zu durchlaufen.
Oder dieses :
Komplette Lösung:
quelle
Gruppieren Sie Ihre Daten nach Monat und projizieren Sie sie dann in eine neue Datentabelle mit Spalten für jeden Monat. Die neue Tabelle wäre Ihre Pivot-Tabelle.
quelle