【发布时间】:2016-11-25 14:27:02
【问题描述】:
所以我已经按照article 中的描述设置了一个 DB 拦截器。
有效的代码:
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();
我没有收到任何错误,但结果完全错误。我没有得到多个 WHEREwhere 的结果,因为 JOIN 按预期工作。
【问题讨论】:
-
您确定 Sometable.Name 中的内容吗?我想,最好检查一下是否为 NullOrEmpty
-
我更新了问题,添加
NULL检查条件
标签: c# sql-server entity-framework linq full-text-search