2016-11-25 58 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