【发布时间】:2015-07-24 02:03:30
【问题描述】:
我想从一个字符串(它将来自一个表)构建一个 IQueryable 查询。我想要 IQueryable 的原因是我想使用 OrderBy、Take 和 Skip 来进行分页。我正在使用带有 DBContext 的实体框架,所以我查看了实体 SQL,但它看起来像是将查询限制为一个类。
我想做的是:
string sql = GetQueryFromDatabase();
IQueryable q = PerformMagicToMakeStringIQueryable(sql);
q = q.OrderBy(somefield).Skip(5).Take(10);
从那里我很好,我知道如何找出查询中有哪些字段并做我需要的。
想法?
谢谢,
约翰
【问题讨论】:
-
不要相信没有某种 ORM 就可以做到这一点。可以看看building an iqueryable provider
-
谢谢。这意味着解析 SQL 字符串以构建表达式树是必要的。有没有方便的代码从 T-SQL 语句构建 linq 表达式树?
-
我不知道。您通常会根据连接器(目标 DMBS 连接器)执行针对数据库的逆向 (LINQ-to-SQL)
-
只是大声思考,但不是将 storinq sql 存储为字符串,您可以将表达式树存储为字符串吗?我在谷歌搜索中得到的第一个结果是:stackoverflow.com/questions/217961/…
-
使用 EF msdn 支持 ASP.NET Web API 2 中的 OData 查询选项
标签: entity-framework iqueryable