2009-08-18 84 views
7

我遇到的情況,我有自定義配置的列名,相關的運營商如<> =等等之間,然後一個值相關聯。如何建立LINQ動態

我想確定是否有可能建立一個動態(字符串)where子句的LINQ查詢?

我已經注意到了Predicate.OR Preditcate.AND的東西,但不是完全是我在說什麼。

有什麼建議嗎?

+1

這可能重複http://stackoverflow.com/questions/736952/the-best-way-to-build-dynamic-linq-查詢問題 – 2009-08-18 08:16:36

+0

「但動態linq只適用於IQueryable,而不是IEnumerable」 - 請參閱我的回覆關於AsQueryable的說明... – 2009-08-19 07:49:50

回答

9

如果你是在談論一個Where條款(而不是建立等自己表達) - 那麼Dynamic LINQ Library(3.5樣品中,IIRC)應足夠了。

請注意,下面的示例用於數據庫使用;但是您可以通過調用內存數據中的.AsQueryable()將它與LINQ-to-Objects一起使用。你

alt text http://www.scottgu.com/blogposts/dynquery/step2.png

+0

儘管Alex首次使用動態LINQ庫,但缺失的部分是由Marc提出的(遺憾的是遺漏了這一點)。您需要.AsQueryAble()擴展方法才能夠處理您的集合。 – Jabezz 2009-08-19 10:10:49

8

實際上,有一個來自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

+0

好的,System.Linq.Dynamic看起來正是我乍看之下的東西。 但動態linq只適用於IQueryable,而不適用於IEnumerable。 所以這仍然存在一些問題。 – Jabezz 2009-08-18 11:55:57