9

我需要创建一个查询来检查字段(字符串)是否包含在运行时提供的一个或多个单词。

基本上我需要能够提出 WhereOr 问题。这似乎应该是处理 LinqToSql 时的常见问题。

我找到了以下参考,但无法理解它 - 并且不知道如何在我的项目中使用它。

我试过以下循环:

        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子句 NOT Where OR的 SQL 查询

4

1 回答 1

17

我将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);
于 2009-11-21T09:50:18.207 回答