所以我设置了一个数据库拦截器,如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
按预期工作。
答案 0 :(得分:0)
您是否100%确定Sometable.Name始终包含数据?您可能希望将该行读为var queryable2 = db.Sometable.Where(x=> (x.Name ?? "").Contains(ft));
,以便永远不会出现空值。