编译需要参数的表达式

发布于 2024-12-09 03:17:38 字数 421 浏览 0 评论 0原文

好吧,我确信这很简单,但我正在经历一个高级时刻。

我有一个简单的 BinaryExpression (大于),左侧是一个 ParameterExpression,右侧是一个 ConstantExpression 我想将此表达式编译为一个函数,我可以调用该函数并将参数传递给...

var func = ...something with my exp....

bool result = func(myValue);

感谢 Hasan,我修改了他的答案根据我的需要...

var func = Expression.Lambda<Func<int,bool>>(myExpr, (ParameterExpression)myExpr.left).Compile();

Ok, I am sure this is simple, but I am having a senior moment.

I have a simple BinaryExpression (greaterthan) the left side is a ParameterExpression and the right side is a ConstantExpression I want to compile this expression to a func that I can call and pass a parameter to...

var func = ...something with my exp....

bool result = func(myValue);

Thanks to Hasan, I modified his answer to my needs...

var func = Expression.Lambda<Func<int,bool>>(myExpr, (ParameterExpression)myExpr.left).Compile();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小兔几 2024-12-16 03:17:38
var param = Expression.Parameter(typeof(int));
var value = Expression.Constant(3);
var body = Expression.GreaterThan(param, value);
var checkValue = Expression.Lambda<Func<int, bool>>(body, param).Compile();

Console.WriteLine(checkValue(4));
Console.WriteLine(checkValue(2));
var param = Expression.Parameter(typeof(int));
var value = Expression.Constant(3);
var body = Expression.GreaterThan(param, value);
var checkValue = Expression.Lambda<Func<int, bool>>(body, param).Compile();

Console.WriteLine(checkValue(4));
Console.WriteLine(checkValue(2));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文