如何在表达式中“选择”参数的属性并将其传递给另一个表达式?

时间:2014-01-06 13:32:21

标签: c# .net lambda expression

我有一个表达式可以直接用于EF存储库:

Expression<Func<Image, bool>> exprNonPrivateMembers = 
    i => i.Member.IsPrivate == false;  

var images = imagesRepository.All().Where(exprNonPrivateMembers);
在我的业务逻辑中的某个地方,我已经有了这个“可搜索”的表达式,如下所示:

Expression<Func<Member, bool>> memberIsSearchable = 
    m => m.IsPrivate == false;  

我想在我的新表达中重用它:

Expression<Func<Image, bool>> exprNonPrivateMembers = 
    i => memberIsSearchable(i.Member);  // pseudocode

这是域模型:

class Image
{
    public Member Member { get; set;}
}

class Member
{
    public bool IsPrivate { get; set;}
}

我该怎么做?

注意:这是一段非常简化的代码,请不要建议删除表达式等有两个原因:

  1. 我还在学习表达魔法,我想学习新的东西
  2. 这确实需要使用表达式来实现:)

0 个答案:

没有答案