使用lambda委托表达式> - 我的表达式采用角色对象(POCO)。
希望使用该POCO Role对象并将其映射到具有匹配属性的数据层Role对象。为此,我需要能够从委托中获取Role对象。
示例:
public List<Role> FindAll(Expression<Func<Role, bool>> filter)
将此方法称为:
FindAll(r => r.Name == role.Name);
r是类型Role,在FindAll函数中,我可以看到过滤器有一个参数,如下:
我可以提取该对象吗?如何?
我确信它必须是可行的,毕竟,linq一直在内部做...
答案 0 :(得分:2)
这里有两个角色:r
,表示过滤器参数,role
,是一个由lambda表达式关闭的对象。我认为您的意思是希望引用role
对象,因为您已找到代表ParameterExpression
的{{1}}。
该对象将是r
,其类型为ConstantExpression
,它将是Role
的{{1}}属性的值,代表Expression
。这将是表示相等性测试的MemberAccessExpression
表达式的右侧,它用作lambda表达式的role.Name
。
这就是你需要的吗?