【发布时间】:2011-03-17 10:58:58
【问题描述】:
我知道我可以使用 ESQL 来查询 ObjectSet of T,但我可以使用它来查询任意的 IQueryable of T 吗?
编辑
例子:
var originalQuery = from t in Transactions where t.Date < DateTime.Now select t;
// query is now an IQueryable<Transation>. Now I want to do some dynamic manipulations
// on originalQuery by using ESQL
var manipulationQuery = "select t.a as A from T as t";
// I want to execute manipulationQuery over the originalQuery, something like this:
// (this is a hipotetical method. It does not exist)
var transactions = context.RunESQLOverIQueryable(originalQuery, manipulationQuery).ToList();
编辑 2
实际上用例如下:我需要一个程序员编写一个返回代表核心查询的 IQueryable(T) 的方法。这个查询将被提供给一个必须在这个查询上执行一系列分组的 ReportControl,以及选择哪些列必须被检索等等。我认为通过 ESQL 动态操作核心查询是一个不错的选择。我也不确定。
【问题讨论】:
-
抱歉,想不通 - 在这种情况下,Entity SQL 是什么?如果您使用的是 EF,那么您获得的大多数 IQueryable
可以被强制转换回 ObjectQuery ,然后您可以再次使用这些方法。 -
好的,谢谢 - 所以有一个非假设的方法可以对 ObjectQuery 做同样的事情吗? (EntityCommands 会这样做吗?)
-
@Rup:谢谢你的回复。我不认为这个字符串谓词 Where 方法可以帮助我解决我的问题。我再次用附加信息编辑了这个问题。谢谢。
标签: c# .net entity-framework linq entity-sql