gpt4 book ai didi

c# - 将 Expression> 转换为 Expression>

转载 作者:行者123 更新时间:2023-11-30 17:55:16 25 4
gpt4 key购买 nike

ASP.NET MVC 中的方法需要表达式 Expression<Func<TModel,Boolean>> (在屏幕上显示一个复选框 HTML 控件),但我的成员是 Boolean? .

在我们的案例中,对于这种特定情况,nullfalse相同, 必须显示未选中的 HTML 复选框。

我如何从 Expression<Func<TModel,Boolean?>> 转换为至 Expression<Func<TModel,Boolean>>添加类似 value = nullableValue.HasValue && nullableValue.Value 的内容挡路了?

请记住,比结果 Expression必须仍然是 MemberExpression ,是什么让我想知道这是否可能。

干杯。

最佳答案

如果您正在访问值属性(如 intbool 等),您将不会获得 MemberExpression 而是 UnaryExpression 作为底层 MemberExpression 被包装在一个 UnaryExpression 中,负责执行 Convert 操作。

这似乎是因为值类型不是引用类型并且不接受 null 值。

如果您愿意接受 UnaryExpression,您可以通过以下方式进行:

Expression<Func<TModel, Boolean?>> source = ...

var resultBody = Expression.Convert(source.Body, typeof(Boolean));
var result = Expression.Lambda<Func<TModel, Boolean>>(resultBody, source.Parameters);

计算器 question你可能会觉得有帮助。

关于c# - 将 Expression<Func<TModel,Boolean?>> 转换为 Expression<Func<TModel,Boolean>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15204999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com