linq - 替换通用Lambda表达式的非通用Lambda表达式

时间:2009-05-12 23:44:23

标签: c# linq lambda

我有这行代码:

var predicate = Expression.Lambda<Func<TEntityType, bool>>(body, param);

其中TEntityType是通用parm。

但是,我没有通用的parm。我有:

Type _EntityType;

这种情况下Expression.Lambda的非泛型语法是什么?

由于

1 个答案:

答案 0 :(得分:9)

Expression.Lambda有一个带有表达式主体类型的重载,所以你只需要在调用那个重载之前动态创建类型。

type lambdaType = typeof(Func<,>).MakeGenericType(_EntityType, typeof(bool));

var predicate = Expression.Lambda(lambdaType, body, param);