5

ユーザーからの入力に基づいて実行時にLINQToSQLステートメントを作成する必要があり、WHERE句を動的に作成する方法がわからないようです。

私は次のことに問題はありません:

string Filters = "<value>FOO</value>";
Where("FormattedMessage.Contains(@0)",Filters)

しかし、私が本当に必要としているのは、WHERE句全体を動的にすることです。このようにして、実行時に次のように複数の条件を追加できます(大まかなアイデア)。

 foreach (Filter filter in filterlist)
            {
                whereclause = whereclause + "&& formattedmessage.contains(filter)";
            }
4

2 に答える 2

1

ここで使用されているデータ型はわかりませんが、一般的なクエリを使用してみませんか?

var query = context.Messages
    .AsQueryable();

foreach (Filter filter in filterlist)
{
    query = query
        .Where(m => m.Contains(filter));
}

これにより、ANDを使用してすべての条件が連結されます(質問のとおり)。

于 2010-05-14T16:17:00.950 に答える
0

PredicateBuilderクラスの使用を検討することもできます。これを使用すると、ツリーにAND/OR条件を動的に追加できます。http://www.albahari.com/nutshell/predicatebuilder.aspxを参照してください

于 2010-05-15T06:51:36.947 に答える