EF6:FullText搜索不使用多个WHERE

时间:2016-11-25 14:27:02

标签: c# sql-server entity-framework linq full-text-search

所以我设置了一个数据库拦截器,如article所述。

有效的代码:

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 个答案:

答案 0 :(得分:0)

您是否100%确定Sometable.Name始终包含数据?您可能希望将该行读为var queryable2 = db.Sometable.Where(x=> (x.Name ?? "").Contains(ft));,以便永远不会出现空值。