Saya bertanya-tanya apakah mungkin menggunakan LINQ untuk menggerakkan data dari tata letak berikut:
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
menjadi sesuatu seperti ini:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
linq
pivot-table
Tim Lentine
sumber
sumber
Saya menjawab pertanyaan serupa menggunakan metode ekstensi LINQ:
(+) implementasi generik
(-) jelas lebih lambat dari Amy B.
Adakah yang bisa meningkatkan implementasi saya (yaitu metode melakukan pemesanan kolom & baris)?
sumber
Pendekatan rapi untuk ini, saya pikir, adalah menggunakan pencarian:
sumber
Berikut ini cara yang lebih umum tentang cara memutar data menggunakan LINQ:
di mana ValueKey adalah kelas khusus yang mewakili kunci multidimensi:
Pendekatan ini dapat digunakan untuk pengelompokan berdasarkan N-dimensi (n> 2) dan akan berfungsi dengan baik untuk dataset yang agak kecil. Untuk dataset besar (hingga 1 juta catatan dan lebih banyak lagi) atau untuk kasus-kasus ketika konfigurasi pivot tidak dapat di-hardcode, saya telah menulis pustaka PivotData khusus (gratis):
sumber
Ini cara yang paling efisien:
Periksa pendekatan berikut. Alih-alih mengulangi melalui kelompok pelanggan setiap waktu untuk setiap bulan.
Atau yang ini:
Solusi lengkap:
sumber
Kelompokkan data Anda pada bulan, dan kemudian proyeksikan ke data baru dengan kolom untuk setiap bulan. Tabel baru akan menjadi tabel pivot Anda.
sumber