0

ユーザーが選択した操作に基づいてSearchFilter 論理演算子ANDをプログラムで実行する方法は??OR

ユーザーがこのような選択をした場合、"[To]ContainsSubstring'Ram' OR [To]containssubstring'lak' それを実行する方法は?

4

1 に答える 1

0

個々のフィルターを式として定義し、ユーザーの選択に基づいてそれらを組み合わせることができます。


編集:私が提案しているのは、述語を作成することです(これは現在廃止されていることを理解しており、基本的に同じものである Func を使用することをお勧めします)、それらを式に組み合わせて、フィルタする必要があるリストに適用します。

ここで見つけた例:複数の述語を組み合わせる


私が過去に行ったことは、ユーザーの選択に基づいて述語を組み合わせて式にコンパイルし、それを Linq Where 拡張メソッドのパラメーターとして使用することです。

したがって、例(コンパイルされるかどうかはわかりませんが、今書いたものです:):

List<Customer> list = new List<Customer>();
List<Func<Customer,bool>> predicateList = new List<Func<Customer,bool>>();

if(/*user choice condition*/)
{
    predicateList.Add(c => c.Name.Contains("test"));
}
if (/*user choice condition*/)
{
    predicateList.Add(c => c.Name.Contains("test") || c.Description.Contains("buyer"));
}
//etc.


Expression<Func<IWorkItem, bool>> filterExpression = c => whereClausePredicates.All(pred => pred(c));
var filteredCustomers = list.Where(filterExpression.Compile());
于 2013-01-16T12:18:14.947 に答える