9

フィールド(文字列)に実行時に提供された1つ以上の単語が含まれているかどうかを確認するクエリを作成する必要があります。

基本的に、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]));
        }

ただし、これにより、 WHEREAND句がWHEREORではない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 に答える