我在哪里可以找到LinQ解析器



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

例如,如果我们有课堂秩序{public int OrderId;}List List =…

用户应该能够进入UI"select p in list where p. orderid> 2";这将返回orderId> 2的订单。

它存在吗?

最快的方法是:

  1. 将表达式嵌入到c#文件中,该文件将生成一个方法,该方法将以expression>形式返回查询;例如,for

    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; } 
        }
    }
    
  2. 调用c#编译器

  3. 加载结果程序集。
  4. 访问属性
  5. 随心所欲地使用Linq树

作为一个副产品,你得到了类型检查和一堆其他的东西。唯一真正的缺点是您需要很好地理解执行查询的环境;如果你想做的一件事是了解环境,那么这对你没有多大帮助。

您可以创建自己的Linq提供程序,下面是在MSDN

上的介绍

相关内容

  • 没有找到相关文章

最新更新