【问题标题】:Can I use Entity SQL to query an IQueryable<T>?我可以使用 Entity SQL 来查询 IQueryable<T> 吗?
【发布时间】: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


【解决方案1】:

检查Dynamic Linq 库。它是samples for Visual studio 2008 的一部分,但也适用于 2010。

【讨论】:

  • 虽然没有回答核心问题,但解决了我的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多