我正在使用http://www.albahari.com/nutshell/predicatebuilder.aspx中的 Albaharis PredicateBuilder来过滤 Linq-to-SQL 应用程序中的结果。这一直很有效。
我现在想做的是重用现有的过滤谓词表达式来过滤将现有过滤对象作为属性的对象。
例如,我有 2 个课程,Order并且Customer. 我已经有一个返回 a 的方法Expression<Func<Customer, bool>>,它是使用上面提到的谓词构建器构建的。我现在想在我的Order过滤方法中重用它,它将Expression<Func<Customer, bool>>通过某种方式将Order.Customer属性(表达式?)传递到我的Customer过滤方法中返回 a 。
我有这样的东西(远未完成,但我希望你明白):
public class CustomerSearchCriteria
{
public Expression<Func<Customer, bool>> FilterPredicate()
{
// Start with predicate to include everything
var result = PredicateBuilder.True<Customer>();
// Build predicate from criteria
if (!String.IsNullOrEmpty(this.Name))
{
result = result.And(c => SqlMethods.Like(c.Name, this.Name));
}
// etc. etc. etc
}
public class OrderSearchCriteria
{
public Expression<Func<Order, bool>> FilterPredicate() …Run Code Online (Sandbox Code Playgroud)