在哪里可以找到LinQ解析器

在哪里可以找到LinQ解析器,linq,parsing,Linq,Parsing,我希望允许我的用户编写和执行linq查询。 为此,我需要一个linq解析器。这个解析器只理解linq表达式,而不理解完整的C语言 例如,如果我们有 阶级秩序 { 公共内部订单ID; } 列表= 用户应该能够在UI中输入 在p.OrderId>2的列表中选择p; 这将返回orderId>2的订单 它存在吗?您可以创建自己的Linq提供程序,这里是您可以创建自己的Linq提供程序,这里是最快的方法: 将表达式嵌入一个C文件,该文件将生成一个方法,该方法将以表达式>的形式返回查询;e、 例如 from

我希望允许我的用户编写和执行linq查询。 为此,我需要一个linq解析器。这个解析器只理解linq表达式,而不理解完整的C语言

例如,如果我们有 阶级秩序 { 公共内部订单ID; } 列表=

用户应该能够在UI中输入 在p.OrderId>2的列表中选择p; 这将返回orderId>2的订单


它存在吗?

您可以创建自己的Linq提供程序,这里是

您可以创建自己的Linq提供程序,这里是最快的方法:

将表达式嵌入一个C文件,该文件将生成一个方法,该方法将以表达式>的形式返回查询;e、 例如

from x in Foos select x.Y
您可能会发射:

class Wrapper {
    IEnumerable<blah> Foos;
    public static Expression<Func<object>> Expr { 
        get { return from x in Foos select x.Y; } 
    }
}
调用文件上的C编译器

加载生成的程序集。 访问该属性 充分利用Linq树。
作为一种副产品,你需要进行类型检查和其他一些事情。唯一的缺点是您需要对执行查询的环境有很好的了解;如果你想做的事情之一是了解环境,那么这对你没有多大帮助。

最快的方法是:

将表达式嵌入一个C文件,该文件将生成一个方法,该方法将以表达式>的形式返回查询;e、 例如

from x in Foos select x.Y
您可能会发射:

class Wrapper {
    IEnumerable<blah> Foos;
    public static Expression<Func<object>> Expr { 
        get { return from x in Foos select x.Y; } 
    }
}
调用文件上的C编译器

加载生成的程序集。 访问该属性 充分利用Linq树。
作为一种副产品,你需要进行类型检查和其他一些事情。唯一的缺点是您需要对执行查询的环境有很好的了解;如果您试图做的事情之一是了解环境,那么这对您没有多大帮助。

听起来您可能想要实现自己的LINQ提供程序。这已在stackoverflow的前面介绍过;看见谷歌搜索LINQ提供商也发现了很多其他的例子。它如何回答我的问题?我仍然需要编写解析器,关键是,你不需要,你实现一个IQueryable提供程序,你可以免费获得Linq解析。听起来你可能想要实现你自己的Linq提供程序。这已在stackoverflow的前面介绍过;看见谷歌搜索LINQ提供商也发现了很多其他的例子。它如何回答我的问题?我仍然需要编写解析器,这就是问题所在,你不需要,你实现一个IQueryable提供程序,你就可以免费获得Linq解析