LINQ - 用非泛型Lambda表达式替换泛型Lambda表达式

6

我有这样一行代码:

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

其中TEntityType是泛型参数。

然而,我没有可用的泛型参数。我有:

Type _EntityType;

在这种情况下,Expression.Lambda的非泛型语法是什么?
谢谢
1个回答

11

有一个重载版本的Expression.Lambda方法可以使用表达式体的类型,因此您只需要在调用该方法之前动态创建该类型即可。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接