Динамическая LINQ Group по вопросу - PullRequest
3 голосов
/ 20 марта 2011

Я использую Dyanmic LINQ из примеров кода VS2010, поскольку я пытаюсь создать выражение LINQ для группового ввода.Я хочу предоставить пользователю возможность выбирать во время выполнения свойства для группировки по / по, а также период группировки (год, квартал, месяц).Из-за этого я решил перейти на Dynamic LINQ.

Вот пример моих данных:

ID |Доход |OrDate |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>.Моя проблема заключается в том, что тип источника данных во время компиляции является 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>?

1 Ответ

0 голосов
/ 01 сентября 2015

Попробуйте это -

For group by in LinQ

var x = t.GroupBy(gp => gp.Name).OrderBy(group => group.Key).Select(group => Tuple.Create(group.Key, group.Count()));

Пожалуйста, найдите

https://dotnetfiddle.net/WPqzhJ

...