繁体   English   中英

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

[英]best way to build the dynamic linq queries in c#?

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

  1. Linq动态(System.Linq.Dynamic)
  2. Albahari的Predicate建设者课程
  3. Linq.Expression

可能有比这些更多的选择。 哪种方式最好?

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

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

FWIW,我的公司在.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的更多信息,您可以访问Microsoft的LINQ(语言集成查询) 它包含从入门到示例教程的所有内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM