次のようなLinq式のリストがあります。
List<Expression<Func<Customer, bool>>>
次のように、検索ページから一連の述語を追加する必要があります。
x.Name.Contains(searchString)
x.Description.Contains(searchString)
...
大量の重複コードにならないようにメソッドを作成したい。次のような署名のあるもの:
void AddCustomerPredicate(List<Expression<Func<Customer, bool>>> predicates, Expression<Func<Customer, string>> prop, string searchString);
私は次のように使用します:
var predicates = new List<Expression<Func<Customer, bool>>>();
AddCustomerPredicate(predicates, x => x.Name, this.Name);
AddCustomerPredicate(predicates, x => x.Description, this.Description);
...
問題を少し単純化しましたが、それが要点です。式ツリーなどの作業をあまり行っていないので、このメソッドを実装する方法がわかりませんか?
**編集**
問題を単純化しすぎたのかもしれません。のようにリストに追加する方法は知っていますが、リストにpredicates.Add(x => x.Name.Contains(this.searchString))
追加する前に各検索パラメーターで実行したいことがいくつかあります (たとえば、null または空のチェック)。したがって、上記のように各検索パラメーターでメソッドを呼び出したいので、そのすべてを単一のメソッドに含めることができます。