2009-01-11 24 views
1

所以我一直敲我的頭靠在牆上諺語了幾個小時,我想我會看看其他人以前這個問題迎刃而解......如何使用List <>作爲我的where子句與Linq的條件?

我有值的List<string>,我想用作搜索過濾器。在過去的日子裏,我會在查詢中建立一串WHERE field = 'a' OR field = 'b' OR field = 'C'。但與林克建築,長條款WHERE是相當困難的。我希望將工作是:

var results = from x in x.table 
       where x.Equals(List<string>) 
       select x; 

唉,編譯器是不是足夠聰明的名單<>分解成WHERE field = 'a' OR field ='b'類型的查詢。我已經將這個過程作爲foreach循環移動到List<string>上,但是當我希望在SQL Server上執行該部分執行時,它將處理推向了客戶端。我住在這裏的幻想世界還是有辦法做到這一點?

回答

5

您可以使用包含()

List<string> yourList = new List<string> { "A", "B", "C" }; 

var results = from x in x.table 
       where yourList.Contains(x) 
       select x; 

如果它的LINQ to SQL它會生成一個WHERE field IN ('A', 'B', 'C')條款。