我遇到的情況,我有自定義配置的列名,相關的運營商如<> =等等之間,然後一個值相關聯。如何建立LINQ動態
我想確定是否有可能建立一個動態(字符串)where子句的LINQ查詢?
我已經注意到了Predicate.OR Preditcate.AND的東西,但不是完全是我在說什麼。
有什麼建議嗎?
我遇到的情況,我有自定義配置的列名,相關的運營商如<> =等等之間,然後一個值相關聯。如何建立LINQ動態
我想確定是否有可能建立一個動態(字符串)where子句的LINQ查詢?
我已經注意到了Predicate.OR Preditcate.AND的東西,但不是完全是我在說什麼。
有什麼建議嗎?
如果你是在談論一個串Where
條款(而不是建立等自己表達) - 那麼Dynamic LINQ Library(3.5樣品中,IIRC)應足夠了。
請注意,下面的示例用於數據庫使用;但是您可以通過調用內存數據中的.AsQueryable()
將它與LINQ-to-Objects一起使用。你
alt text http://www.scottgu.com/blogposts/dynquery/step2.png
儘管Alex首次使用動態LINQ庫,但缺失的部分是由Marc提出的(遺憾的是遺漏了這一點)。您需要.AsQueryAble()擴展方法才能夠處理您的集合。 – Jabezz 2009-08-19 10:10:49
實際上,有一個來自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
好的,System.Linq.Dynamic看起來正是我乍看之下的東西。 但動態linq只適用於IQueryable,而不適用於IEnumerable。 所以這仍然存在一些問題。 – Jabezz 2009-08-18 11:55:57
也可以使用表達式目錄樹創建動態查詢。請參閱:
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
這比使用DynamicLinq更安全,這似乎非常容易受到攻擊。 – AgentFire 2018-03-05 09:25:07
這可能重複http://stackoverflow.com/questions/736952/the-best-way-to-build-dynamic-linq-查詢問題 – 2009-08-18 08:16:36
「但動態linq只適用於IQueryable,而不是IEnumerable」 - 請參閱我的回覆關於AsQueryable的說明... – 2009-08-19 07:49:50