动态 GroupBy 是否与动态 LINQ 中的动态Where一起工作?
我使用这个 动态 LINQ 库 与 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< /code> 带有消息
查询语法无效。,靠近关键字“FROM”,第 2 行,第 1 列。
与 foreach
语句一致。
我怎样才能让它毫无例外地工作?
请注意,db.Table1.Where(e=>e.FieldA>10)
的类型是 IQueryable
,但是 db.Table1 的类型。其中(“it.FieldA>10”)
是System.Data.Objects.ObjectQuery
。
I use this dynamic LINQ library together with Linq-to-Entities.
I build query and after that iterate it with foreach(object e in query){}
query=db.Table1.Where("it.FieldA>10").Select("it.FieldB");
works.query=db.Table1.Where(e=>e.FieldA>10).GroupBy("it.FieldB", "it").Select("key")
works.
But query=db.Table1.Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key")
causes EntitySqlException
with message The query syntax is not valid., near keyword 'FROM', line 2, column 1.
in line with foreach
statement.
How can I make it work without exception ?
Note that type of db.Table1.Where(e=>e.FieldA>10)
is IQueryable<Table1>
, but type of db.Table1.Where("it.FieldA>10")
is System.Data.Objects.ObjectQuery<Table1>
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到了,
db.Table1.AsQueryable()
修复了它,所以db.Table1.AsQueryable().Where("it.FieldA>10").GroupBy("it.FieldB" , "it").Select("key")
毫无例外地工作。问题在于 Microsoft Dynamic Linq 库扩展了
IQueryable
,因此它对ObjectQuery
(db.Table1 的类型)不起作用
。Found it,
db.Table1.AsQueryable()
fixed it, sodb.Table1.AsQueryable().Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key")
works without exception.The problem was that Microsoft Dynamic Linq library extends
IQueryable<Table1>
, so it does not take effect onObjectQuery<Table1>
which is the type ofdb.Table1
.