我想知道在LINQ中构建动态查询的最佳方法是什么。查询将是复杂的和嵌套的。在搜索过程中,我找到了几种方法:
可能有比这些更多的选择。哪种方式是最好的?
发布于 2011-11-28 04:21:12
这取决于你的环境:你需要它的速度有多快,你的起点是什么,等等。在一个不受约束的世界中,我认为最好的方法是滚动自己的库来构建动态查询。您可以使用Scott或Joseph的工作作为一种灵感,但最后,在Linq.Expression库中,所有的工作都是“自下而上”的。
“自己动手”方法的一个优点是,您不需要从代码连接到某人的框架。相反,您可以直接将代码编写到.NET API。当您已经有了动态查询的表示时(例如,在通过UI向用户呈现的模型中)、在XML文件中等等时,这可能很有用。您所需要的只是递归地遍历该表示,并生成System.Linq.Expression作为返回。
FWIW,当.NET 3.5发布时,我的公司采取了这种方法,我们对结果非常满意。
发布于 2011-11-28 06:04:35
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的更多信息,您可以访问微软的语言集成查询。它包含了从入门到示例教程的所有内容。
https://stackoverflow.com/questions/8291375
复制相似问题