【问题标题】:I'm looking for a way to build a IQueryable query from a string我正在寻找一种从字符串构建 IQueryable 查询的方法
【发布时间】: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


【解决方案1】:

你可以使用一个叫做 DynamicLinq 的东西。

有很多不同的版本,因为 MS 发布了原始源代码,并且修改了无数次:

这是一个带有文档的:

http://dynamiclinq.azurewebsites.net/

以下是其他:

https://www.nuget.org/packages?q=dynamic+linq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2020-01-14
    • 1970-01-01
    • 2011-03-20
    • 2017-05-31
    • 2011-08-30
    • 2017-12-19
    • 2021-07-06
    相关资源
    最近更新 更多