在表达式树中转换为可为空的小数
本文关键字:小数 转换 表达式 | 更新日期: 2023-09-27 18:33:24
我的模型具有可为空的十进制类型。所以在我的表达式树中,它给了我以下错误:
未为类型定义二元运算符 Equal。 "System.Nullable"1[System.Decimal]"和"System.Decimal"
现在我想将字符串转换为十进制? 就此而言,我已经尝试过:
decimal? res = Convert.ToDecimal(mystr); // this gives me type as System.Decimal
我也看过这个,这个,这个和这个的答案。他们都将其转换为System.Decimal 类型,我的表达式树给出了上面提到的错误。
我真的需要将它们转换为System.Nullable(System.Decimal)才能为我工作。
我该如何解决?我的模型是从实体框架 EDMX 生成的,因此我无法更改其类型。我必须在代码中进行转换。
您显示的普通 C# 代码示例已转换为 decimal?
,对任何不可为空的值类型T
使用从 T
到 T?
的隐式转换。
在表达式树中,您只需要使用Expression.Convert
来执行该转换,例如
// Assuming beforeConversion is an expression tree with a type of
// decimal
var converted = Expression.Convert(beforeConversion, typeof(decimal?));