Me pregunto si es posible usar LINQ para pivotar datos del siguiente diseño:
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
en algo como esto:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
linq
pivot-table
Tim Lentine
fuente
fuente
Respondí una pregunta similar usando el método de extensión linq:
(+) implementación genérica
(-) definitivamente más lenta que la de Amy B
¿Alguien puede mejorar mi implementación (es decir, el método ordena las columnas y filas)?
fuente
El mejor enfoque para esto, creo, es usar una búsqueda:
fuente
Aquí hay una forma un poco más genérica de cómo pivotar datos usando LINQ:
donde ValueKey es una clase especial que representa la clave multidimensional:
Este enfoque se puede usar para agrupar por N dimensiones (n> 2) y funcionará bien para conjuntos de datos bastante pequeños. Para grandes conjuntos de datos (hasta 1 millón de registros y más) o para casos en los que la configuración dinámica no se puede codificar, he escrito una biblioteca PivotData especial (es gratuita):
fuente
Esta es la forma más eficiente:
Verifique el siguiente enfoque. En lugar de recorrer el grupo de clientes cada vez durante cada mes.
O este :
Solución completa:
fuente
Agrupe sus datos por mes y luego proyecte en una nueva tabla de datos con columnas para cada mes. La nueva tabla sería su tabla dinámica.
fuente