我有一个 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))
如 因此,我想如上所述在每个搜索参数上调用一个方法,因此所有这些东西都可以包含在一个方法中。