在c#中构建动态linq查询的最佳方法

本文关键字:查询 最佳 方法 linq 动态 构建 | 更新日期: 2023-09-27 18:16:08

我想知道在LINQ中构建动态查询的最佳方法是什么。查询将是复杂的和嵌套的。在搜索过程中,我发现了一些方法:

  1. Linq dynamic (System.Linq.Dynamic)
  2. Albahari的谓词构建器类
  3. Linq。表达

可能有更多的选项。哪一种是最好的方法?

在c#中构建动态linq查询的最佳方法

这取决于您的情况:您需要多快,您的起点是什么,等等。在一个不受约束的世界中,我认为最好的方法是使用自己的库来构建动态查询。你可以用斯科特或约瑟夫的作品作为灵感,但最终它都在Linq中"触底"。表达式库。

"自己动手"方法的一个优点是,您不需要将自己的代码连接到别人的框架。相反,您可以直接编写。net api。当您已经有了动态查询的表示形式时,例如,在通过UI呈现给用户的模型中、在XML文件中等,这可能会很有用。您所需要做的就是递归地遍历该表示,并生成System.Linq.Expression作为返回。

顺便说一句,我的公司在。net 3.5发布时采用了这种方法,我们对结果非常满意。

Linq查询可以用两种方式编写,并允许您使用任何类型的嵌套。

查询语法

IEnumerable<int> numQuery1 = 
        from num in numbers
        where num % 2 == 0
        orderby num
        select num;

方法语法

 IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

有关Linq的更多信息,可以访问微软的Linq(语言集成查询)。它包含了从入门到示例教程

的所有内容。