2010-12-09 50 views

回答

1

你可以寫上System.String使用實例方法LINQ查詢。大多數LINQ提供者能夠將其轉換爲SQL語句。例如:

from customer in db.Customers 
where customer.Name.Contains("foo") || customer.Name.Contains("bar") 
select customer; 

LINQ到實體將它轉換爲是這樣的:

SELECT T1.* 
FROM Customers T1 
WHERE T1.Name LIKE '%' + @p1 + '%' 
OR T1.Name LIKE '%' + @p2 + '%' 

需要注意的是,當你需要的話的動態數字搜索,您可以使用PredicateBuilder。它允許您構建包含OR語句的謂詞。用工會改寫它也是一種有效的方法。例如:

string[] searchWords; 

// Define an empty set. 
var customers = 
    from customer in db.Customers 
    where false 
    select customer; 

// Union the empty set with a set for a word. 
foreach (var temp in searchWords) 
{ 
    var searchWord = temp; 

    customers = customers.Union(
     from customer in db.Customer 
     where customer.Name.Contains(searchWord) 
     select customer); 
} 
1

我相信你是像後:

from xx in table 
where uids.Contains(xx.uid.ToString()) 
select xx 

如果你是後獨立字符串搜索,也許是:

string input = "some String"; 
string[] toSearchFor = GetSearchStrings(); 
var containsAll = toSearchFor.All(x => input.Contains(x)); 
+0

+1 - 打我給它重新。所有()......這麼說,我覺得這個通用的解決方案(試圖仿效自由文本搜索)將是一個真正的資源和性能豬OP。 – 2010-12-09 16:08:33

+0

我不認爲LINQ to Entities能夠處理`All`運算符。 – Steven 2010-12-09 16:26:38