我需要创建一个查询,检查字段(字符串)是否包含运行时提供的一个或多个单词.
基本上我需要能够问一个WhereOr问题.在处理LinqTosql时,这似乎应该是一个常见问题.
我发现了以下reference,但是它没有意义 – 并且不知道如何在我的项目中使用它.
我尝试了以下循环:
var query = from d in context.Domains select d; for (int i = 0; i < words.Length; i++) { query = query.Where(d => d.Name.Contains(words[i])); }
但这会构建一个带有WHERE AND子句的SQL查询,而不是OR
解决方法
我用
PredicateBuilder这样的东西.
谓词结构如下所示:
var query = from d in context.Domains select d; var predicate = PredicateBuilder<Domains>.False(); for (int i = 0; i < words.Length; i++) { predicate = predicate.Or(d => d.Name.Contains(words[i])); } query = query.Where(predicate);