我想知道哪种是在 LINQ 中构建动态查询的最佳方式。查询将是复杂的和嵌套的。在搜索时我发现了几种方法:
- Linq 动态 (System.Linq.Dynamic)
- Albahari 的谓词构建器类
- Linq.Expression
可能有比这些更多的选择。哪种方法最好?
最佳答案
这取决于您的情况:您需要多快的速度、您的起点是什么等等。在不受约束的世界中,我认为最好的办法是推出自己的库来构建动态查询。您可以从 Scott 或 Joseph 的作品中获得灵感,但最终都在 Linq.Expression 库中“触底”。
“自己动手”方法的一个优点是您不需要从您的代码桥接到某人的框架。相反,您可以直接对 .NET API 进行编码。当您已经拥有动态查询的表示时,这可能很有用,例如,在您通过 UI 呈现给用户的模型中,在 XML 文件中等。您需要的只是递归地遍历该表示,并生成系统.Linq.Expression 作为返回值。
FWIW,我的公司在 .NET 3.5 发布时采用了这种方法,我们对结果非常满意。
关于c# - 在 C# 中构建动态 linq 查询的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291375/