2012-10-19 81 views
0

包含給定的字符串是這樣的:動態查詢實體框架

var filterOptions = "First Bank"; 

和具有承授列和出讓人列的表,如何創建與EF一個查詢,將產生以下WHERE子句:

... where (Grantor like '%First%' and Grantor like '%Bank%') or (Grantee like '%First%' and Grantee like '%Bank%') 

記住filterOptions是通過在PARM,所以它可以很容易地包含3名或4個字,而不是隻有兩個......在這種情況下,每一列都需要額外的像條款。

如果不是因爲這樣做的或部分,我會做以下(這將有助於給的什麼,我試圖完成一個更好的主意。

foreach(var word in filterOptions) 
{ 
    var text = "%" + word + "%"; 
    query = query.Where(r => SqlMethods.Like(r.Grantee,text)); 
} 

就像我說的,它的試圖與投我要循環的另一列添加或部分

+0

你試過Contains? – Pawel

+0

是的,但它的確和SqlMethods.Like()一樣。我可以將上面的代碼改爲:query = query.Where(r => r.Grantee.Contains(word))。但是,這並沒有幫助OR問題...我仍然沒有辦法將授予者和受讓人與相同的查詢進行OR操作。 – RHarris

回答