Я использую Dyanmic LINQ из примеров кода VS2010, поскольку пытаюсь создать групповое выражение LINQ. Я хочу предоставить пользователю возможность выбирать во время выполнения свойства для группировки, а также период группировки (год, квартал, месяц). Из-за этого я решил перейти на Dynamic LINQ.
Вот пример моих данных:
ID| Доход | Ордата |
1 | 900000 | 1-1-2000 |
2 | 180000 | 1-9-2000 |
3 | 300000 | 3-2-2002 |
4 | 100000 | 2-7-2003 |
и выражение, которое я строю, выглядит так:
dataSource.GroupBy("new (OrDate.Year as Year, OrDate as Month)", "Income").Select("new (Key.Year, Key.Month, Sum(Value) as Income)");
Это хорошо работает, ТОЛЬКО я знаю точный тип списка; например: List<Product>
или List<Order>
. Моя проблема в том, что тип dataSource во время компиляции — это List<object>
. Из-за этого всякий раз, когда я заполняю список Заказами или Продуктами, я получаю исключение:
No generic method 'GroupBy' on type 'System.Linq.Queryable' is compatible with the supplied type arguments and arguments. No type arguments should be provided if the method is non-generic.
Может ли кто-нибудь сказать мне, как этого можно избежать и при этом сохранить список источников как List<object>
?
dataSource
являетсяList<T>
? МетодGroupBy
в Dynamic LINQ является методом расширенияIQueryable
, а неIEnumerable
. - person Slauma   schedule 21.03.2011IQueryable
илиIQueryable<object>
? Я пытался воспроизвести ошибку, но получаю только такие ошибки, как OrDate не является членом типа Object, но не ваше сообщение об ошибке. Не могли бы вы уточнить, что такоеdataSource
и откуда оно взялось? - person Slauma   schedule 22.03.2011