【发布时间】:2015-04-27 10:44:12
【问题描述】:
我们有一个T1 类型的实体,它有一个T 类型的成员。
像这样:
public class T1
{
public T Member{get;set;}
}
用户可以使用我们的 UI 为我们提供一个过滤 T 的过滤器,我们已将其转换为一个函数表达式,该表达式获取一个 T 并返回 bool (Expression<Func<T,bool>>)
我想知道是否可以将其转换为获取 T1 并返回 bool 的函数的表达式。
其实我想转换这个:
(t=>t.Member1==someValue && t.Member2==someOtherValue);
到这里:
(t1=>t1.Member.Member1==someValue && t1.Member.Member2==someOtherValue);
【问题讨论】:
-
我假设编译器没有静态可用的这些信息。我知道 T->bool 表达式是动态提供的,但是 T1 和 Member 是静态可用的吗?您还需要将其作为表达式还是可以将其转换为委托?
-
你可以试试Invoke
-
因为我必须将它传递给 Linq 提供程序并且我必须使用 IQueryables 我认为我必须将它们作为表达式?
-
@Grundy 有人说答案在于 Invoke 但我仍然看不出我应该如何使用它:)
-
呵呵,我喜欢发布我对其他问题的回答,我想这也可以帮助你:P stackoverflow.com/questions/29448432/…
标签: c# lambda expression-trees