使用外部表达式参数的成员属性调用 C# 内部表达式
我正在使用在这里找到的 Albaharis PredicateBuilder http://www.albahari.com/nutshell/predicatebuilder。 aspx 来过滤 Linq-to-SQL 应用程序中的结果。这一直很有效。
我现在想做的是重用现有的过滤谓词表达式来过滤将现有过滤对象作为属性的对象。
例如,我有 2 个类,Order
和 Customer
。我已经有一个返回 Expression
的方法,该方法是使用上述谓词构建器构建的。我现在想在我的 Order
过滤方法中重用它,该方法将通过某种方式传递 Order.Customer 返回
属性(表达式?)到我的 Expression
Customer
过滤器方法中。
我有这样的东西(远未完成,但我希望你明白):
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()
{
// Start with predicate to include everything
var result = PredicateBuilder.True<Order>();
// Build predicate from criteria
if (!String.IsNullOrEmpty(this.Reference))
{
result = result.And(o => SqlMethods.Like(o.Reference, this.Reference));
}
// etc. etc. etc
// This is where I would like to do something like:
// result = result.And(o => o.Customer "matches" this.CustomerCriteria.FilterPredicate()
}
任何 Linq 表达式大师都可以帮助我吗?
提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用 Albaharis 的 LinqKit,您应该能够执行以下操作:
If you use the Albaharis' LinqKit, you should be able to do something like this: