C# 动态LINQ分组问题

C# 动态LINQ分组问题,c#,visual-studio,linq,dynamic-linq,C#,Visual Studio,Linq,Dynamic Linq,我正在使用VS2010代码示例中的动态LINQ,因为我正在尝试创建LINQGroupBy表达式。 我希望允许用户在运行时选择要分组的属性,以及分组的时间段(年、季、月)。因此,我决定选择动态LINQ 以下是我的数据示例: ID |收入|订单| 1 | 900000 | 1-1-2000 | 2 | 180000 | 1-9-2000 | 3 | 300000 | 3-2-2002 | 4 | 100000 | 2-7-2003 | 我构建的表达式如下所示: dataSource.GroupBy(

我正在使用VS2010代码示例中的动态LINQ,因为我正在尝试创建LINQGroupBy表达式。 我希望允许用户在运行时选择要分组的属性,以及分组的时间段(年、季、月)。因此,我决定选择动态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
List
。我的问题是编译时的数据源类型是一个
列表
。因此,每当我在列表中填写订单或产品时,我都会得到一个例外:

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.
有谁能告诉我如何避免这种情况,并且仍然保持源代码列表为
列表

试试这个-

For group by in LinQ

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


如果
数据源
是一个
列表
,这是否会编译?动态LINQ中的
GroupBy
方法是
IQueryable
的扩展方法,而不是
inumerable
的扩展方法。糟糕,你说得对,它是IQueryable。它是非泛型的
IQueryable
还是
IQueryable
?我试图重现这个错误,但我只得到类似“OrDate不是Object类型的成员”这样的错误,而没有得到您的错误消息。你能再澄清一下数据源的确切含义和来源吗?