2016-11-25 75 views
0

因此,我已經設置了一個DB攔截器,如此article中所述。EF6:FullText搜索不能與多個WHERE

的作品

代碼:

var ft = FtsInterceptor.Fts('something'); 
var queryable1 = db.Sometable.Where(x=> x.Id > 30); 
var queryable2 = db.Sometable.Where(x=> x.Name != null && x.Name.Contains(ft)); 
var final = (from q1 in queryable1 join q2 in queryable2 on q1.Id equals q2.Id select q1).ToList(); 

碼不起作用:

var ft = FtsInterceptor.Fts('something'); 
var queryable = db.Sometable.Where(x=> x.Id > 30); 
queryable = queryable.Where(x=> x.Name != null && x.Name.Contains(ft)); 
var final = queryable.ToList(); 

我沒有得到任何錯誤,但結果是完全關閉。我沒有得到多個WHERE的結果,其中JOIN按預期工作。

+1

您確定Sometable.Name中的內容嗎?我想,這將是更好的檢查如果它是空或空 – Egorikas

+0

我更新了問題,添加NULL檢查條件 –

回答

0

您是否100%確定Sometable.Name始終包含數據?您可能想要將該行讀取爲var queryable2 = db.Sometable.Where(x=> (x.Name ?? "").Contains(ft));,以便永遠不會有空值。

+0

我試圖添加空檢查和是錯誤消失,但我沒有得到任何結果與多個WHERE –

+0

檢查我的答案在這裏:http://stackoverflow.com/a/41167438/875708 – akd