【发布时间】:2012-02-01 16:34:00
【问题描述】:
使用 lambda 委托表达式> - 我的表达式采用 Role 对象 (POCO)。
希望使用该 POCO 角色对象并将其映射到具有匹配属性的数据层角色对象。为此,我需要能够从委托中获取 Role 对象。
例子:
public List<Role> FindAll(Expression<Func<Role, bool>> filter)
像这样调用这个方法:
FindAll(r => r.Name == role.Name);
r 是 Role 类型,在 FindAll 函数中,我可以看到 filter 有一个参数,例如:
我可以提取那个对象吗?如何?
我确信它必须是可行的,毕竟 linq 一直在内部进行......
【问题讨论】:
-
你为什么要复制
Where? -
您是否尝试将它们投射到专门的
Expression's? -
@leppie 1) 你是什么意思,'我为什么要复制
Where? 2) Parameter[0] 是 ParameterExpression 类型 - 到目前为止,我还没有找到任何可以转换为我自己类型的属性,但我仍在尝试。 -
调试器已经为您列出了所有类型。只需投射到那个,中提琴,你就有了你在调试器中看到的属性。这是一项相当微不足道的任务,不涉及任何魔法:)
-
@TheEvilGreebo 你为什么不能投那个呢?
标签: c# linq lambda expression