Мне интересно, можно ли использовать LINQ для поворота данных из следующего макета:
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
в нечто вроде этого:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
linq
pivot-table
Тим Лентин
источник
источник
Я ответил на аналогичный вопрос, используя метод расширения linq:
(+) общая реализация
(-) определенно медленнее, чем у Эми Б.
Может ли кто-нибудь улучшить мою реализацию (т.е. метод выполняет упорядочение столбцов и строк)?
источник
Я думаю, что для этого лучше всего использовать поиск:
источник
Вот немного более общий способ поворота данных с помощью LINQ:
где ValueKey - это специальный класс, представляющий многомерный ключ:
Этот подход можно использовать для группировки по N-измерениям (n> 2) и будет отлично работать для довольно небольших наборов данных. Для больших наборов данных (до 1 млн. Записей и более) или для случаев, когда конфигурация сводной таблицы не может быть жестко задана, я написал специальную библиотеку PivotData (она бесплатна):
источник
Это наиболее эффективный способ:
Проверьте следующий подход. Вместо того, чтобы повторять группу клиентов каждый раз для каждого месяца.
Или этот:
Полное решение:
источник
Сгруппируйте свои данные по месяцам, а затем спроектируйте их в новую таблицу данных со столбцами для каждого месяца. Новая таблица будет вашей сводной таблицей.
источник