如何动态构建LINQ

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何动态构建LINQ相关的知识,希望对你有一定的参考价值。

我有一个场景,我有自定义配置列名称,关联运算符,如<> =之间等,然后一个值相关联。

我正在尝试确定是否可以使用动态(字符串)where子句构建LINQ查询?

我注意到Predicate.OR Preditcate.AND的东西,但这不是我所说的。

有什么建议?

答案

如果你正在谈论一个字符串Where条款(而不是自己构建表达式等) - 那么Dynamic LINQ Library(在3.5个样本中,IIRC)就足够了。

请注意,以下示例适用于数据库使用情况;但是你可以通过在你的内存数据中调用.AsQueryable()来将它与LINQ-to-Objects一起使用。

alt text

另一答案

实际上,Microsoft(System.Linq.Dynamic)中有一个特定的库,它附带了支持此功能的C#VS2008示例。从here (Microsoft Download)获取它

该库包含在上面下载示例的 LinqSamples DynamicQuery目录中。

有关广泛使用示例,请查看此页面:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

另一答案

您还可以使用表达式树来创建动态查询。看到:

http://msdn.microsoft.com/en-us/library/bb397951.aspx

http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees

http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx

以上是关于如何动态构建LINQ的主要内容,如果未能解决你的问题,请参考以下文章

如何针对分层对象列表动态构建和存储复杂的 linq 查询?

具有匿名类型的 C# LINQ 构建表达式

深入LINQ | 动态构建LINQ表达式

从字符串构建动态LINQ查询 - 使用Reflection?

csharp 在Linq中动态构建Where子句

Linq to Entities 中的动态 where 子句 (OR)