Gostaria de saber se é possível usar o LINQ para dinamizar dados do seguinte layout:
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
em algo como isto:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
linq
pivot-table
Tim Lentine
fonte
fonte
Eu respondi uma pergunta semelhante usando o método de extensão linq:
(+) implementação genérica
(-) definitivamente mais lenta que a de Amy B
Alguém pode melhorar minha implementação (ou seja, o método faz a ordem das colunas e linhas)?
fonte
A melhor abordagem para isso, acho, é usar uma pesquisa:
fonte
Aqui está uma maneira um pouco mais genérica de como dinamizar dados usando o LINQ:
em que ValueKey é uma classe especial que representa a chave multidimensional:
Essa abordagem pode ser usada para agrupar por dimensões N (n> 2) e funcionará bem para conjuntos de dados bastante pequenos. Para conjuntos de dados grandes (até 1 mln de registros e mais) ou para casos em que a configuração dinâmica não pode ser codificada, escrevi uma biblioteca PivotData especial (é gratuita):
fonte
Esta é a maneira mais eficiente:
Verifique a seguinte abordagem. Em vez de percorrer o grupo de clientes a cada vez em cada mês.
Ou este:
Solução completa:
fonte
Agrupe seus dados no mês e, em seguida, projete-os em uma nova tabela de dados com colunas para cada mês. A nova tabela seria sua tabela dinâmica.
fonte