简体   繁体   English

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

[英]linq - Substitute Non-Generic Lambda Expression for Generic Lambda Expression

I have a this line of code: 我有这行代码:

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

where TEntityType is a generic parm. 其中TEntityType是一个通用的parm。

However, I don't have generic parm available. 但是,我没有通用的parm。 I do have: 我有:

Type _EntityType;

What is the non-generic syntax for Expression.Lambda is this case? Expression.Lambda的非泛型语法是什么情况?

Thanks 谢谢

There's an overload for Expression.Lambda that takes the type of the expression body, so you just need to create the type dynamically before calling that overload. Expression.Lambda有一个重载,它接受表达式主体的类型,因此您只需要在调用该重载之前动态创建该类型。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM