动态GroupBy与动态LINQ中的动态Where一起工作吗?

时间:2010-08-06 21:52:38

标签: .net linq dynamic linq-to-entities dynamic-linq

我将这个dynamic LINQ library与Linq-to-Entities一起使用 我构建了查询,之后用foreach(object e in query){}

进行迭代

query=db.Table1.Where("it.FieldA>10").Select("it.FieldB");有效 query=db.Table1.Where(e=>e.FieldA>10).GroupBy("it.FieldB", "it").Select("key")有效 但query=db.Table1.Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key")会导致EntitySqlException消息The query syntax is not valid., near keyword 'FROM', line 2, column 1.符合foreach声明。

如何让它毫无例外地运作?

请注意,db.Table1.Where(e=>e.FieldA>10)的类型为IQueryable<Table1>,但db.Table1.Where("it.FieldA>10")的类型为System.Data.Objects.ObjectQuery<Table1>

1 个答案:

答案 0 :(得分:0)

找到它,db.Table1.AsQueryable()已修复它,因此db.Table1.AsQueryable().Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key") 无例外地工作。

问题是Microsoft Dynamic Linq库扩展了IQueryable<Table1>,因此它不会对 ObjectQuery<Table1> db.Table1的{​​{1}}生效。