动态LINQ和动态Lambda表达式?
动态编写LINQ查询和Lambda表达式的最佳方法是什么 我想到的应用程序中,最终用户可以设计业务逻辑规则,然后必须执行这些规则动态LINQ和动态Lambda表达式?,linq,.net-3.5,dynamic,lambda,Linq,.net 3.5,Dynamic,Lambda,动态编写LINQ查询和Lambda表达式的最佳方法是什么 我想到的应用程序中,最终用户可以设计业务逻辑规则,然后必须执行这些规则 如果这是一个新手问题,我很抱歉,但是从经验中获得最佳实践将是非常好的。我可以看到两种动态生成lambda的方法。您可以尝试Reflection.Emit直接生成IL(即.Net字节码)并将其作为lambda调用,也可以使用System.CodeDom和Microsoft.CSharp.CSharpCodeProvider从更高级别的构造生成代码。您想做什么取决于您希望
如果这是一个新手问题,我很抱歉,但是从经验中获得最佳实践将是非常好的。我可以看到两种动态生成lambda的方法。您可以尝试Reflection.Emit直接生成IL(即.Net字节码)并将其作为lambda调用,也可以使用System.CodeDom和Microsoft.CSharp.CSharpCodeProvider从更高级别的构造生成代码。您想做什么取决于您希望用户如何输入这些内容。如果您希望用户编写C#,那么您可以使用内置编译器
动态生成Linq应该更容易。您应该能够在运行时将LINQ查询生成为表达式树,然后将它们传递到IQueryable中执行。我建议您查看iQueryEnable上的文档以了解更多信息。另一种方法是预先定义两个linq查询,然后允许用户将它们链接在一起。这应该是可行的,因为任何Linq查询都会返回一个IEnumerable,可供下一个Linq查询使用。另一种可能性是将脚本运行时集成到程序中,以便用户可以在DSL中编写业务逻辑。我不明白你说的“最佳方式”是什么意思。最好提供一个简单的例子来说明你想要实现的目标。编写动态LINQ表达式并不困难,但很棘手 以下是创建动态linq表达式的示例:
可以通过System.Linq.expressions名称空间轻松创建Lambda表达式。我不能推荐比您阅读Bart De Smet()的帖子更高的表达式,他在Lambda方面非常出色 他最近的系列报道了动态Lambda,从
绝对漂亮的代码。正是您所需要的。我已经编写了一个很好的UI,它允许用户以表达式树的形式动态定义和构建查询。然后,您可以将其交给Linq2SQL或您选择的客户机。我不知道这类事情的“最佳实践”。我知道如何解决具体的问题,但一般的“最佳方法”是太模糊的问题。合理的建议。我们这样做是为了配置工作流,它工作得非常好。唯一的缺点是,您可能会遇到完全/部分信任问题,这将阻止您的代码在asp.net中执行