Я думаю, что мне нужен способ выполнить сводную или перекрестную таблицу, используя C # и Linq с неопределенным числом столбцов. Тем не менее, я добавлю некоторые начальные подробности, чтобы увидеть, куда это идет.
<Начальная деталь>
Представьте себе таблицу с двумя полями:
string EventName;
Datetime WhenItHappend;
Мы хотим сгенерировать отчет, как в примере ниже, где мы группируем по EventName, а затем имеем ряд столбцов, которые вычисляют некоторое количество дат и временных рамок. Трудность, очевидно, заключается в переменном количестве столбцов.
Спорт январь 2010 январь 2009 февраль 2010 февраль 2009
Баскетбол 26 18 23 16
Хоккей 28 19 25 18
Плавание 52 45 48 43
Клиент может создать любое количество именованных счетчиков событий для отчета. Функции всегда одинаковы: «Имя», «Начало», «Конец».
Любой способ собрать это как один результат linq IQueryable в C #?
<Конец Начальной детали>
Что касается SQL, я попытался создать таблицу диапазонов дат {TimeFrameName, begin, end} и соединил ее с таблицей выше, где begin <= whenItHappened и whenItHappened <= end, что привело к хорошему набору {EventName, TimeFrameName} затем сделал подсчет (*), но все равно остался способ преобразования данных, превращая строки в столбцы. </p>