ユーザーが選択した操作に基づいてSearchFilter 論理演算子AND
をプログラムで実行する方法は??OR
ユーザーがこのような選択をした場合、"[To]ContainsSubstring'Ram' OR [To]containssubstring'lak'
それを実行する方法は?
ユーザーが選択した操作に基づいてSearchFilter 論理演算子AND
をプログラムで実行する方法は??OR
ユーザーがこのような選択をした場合、"[To]ContainsSubstring'Ram' OR [To]containssubstring'lak'
それを実行する方法は?
個々のフィルターを式として定義し、ユーザーの選択に基づいてそれらを組み合わせることができます。
編集:私が提案しているのは、述語を作成することです(これは現在廃止されていることを理解しており、基本的に同じものである 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());