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

时间:2011-11-28 03:54:54

标签: c# linq dynamic

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

  1. Linq dynamic(System.Linq.Dynamic)
  2. Albahari的Predicate建设者课程
  3. Linq.Expression
  4. 可能有更多选择。哪种方式最好?

2 个答案:

答案 0 :(得分:1)

这取决于您的情况:您需要多快,您的起点是什么,等等。在一个不受约束的世界中,我认为最好的事情是推出自己的库来构建动态查询。你可以使用Scott或Joseph的作品作为灵感,但最终它在Linq.Expression库中都“低谷”。

“自己动手”方法的一个优点是您不需要从代码桥接到某人的框架。相反,您可以直接编写.NET API代码。当您已经拥有动态查询的表示时,这可能很有用,例如,在通过UI,XML文件等呈现给用户的模型中。您只需要递归地遍历该表示,并生成系统.Linq.Expression作为回报。

FWIW,我的公司在.NET 3.5发布时采用了这种方法,我们对结果非常满意。

答案 1 :(得分:-1)

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的更多信息,您可以访问Microsoft的LINQ (Language-Integrated Query)。它包含从入门到示例教程的所有内容