我的模型有Nullable十进制类型。所以在我的表情树中,它给了我以下错误:
没有为类型定义二元运算符Equal 'System.Nullable`1 [System.Decimal]'和'System.Decimal'
现在我想将字符串转换为十进制?为此我尝试过:
decimal? res = Convert.ToDecimal(mystr); // this gives me type as System.Decimal
我还查看了this,this,this和this的答案。它们都将它转换为System.Decimal类型,我的表达式树给出了上面提到的错误。
我真的需要将它们转换为System.Nullable(System.Decimal)才能为我工作。
我该如何解决?我的模型是从Entity Framework EDMX生成的,因此我无法更改其类型。我必须在代码中进行转换。
答案 0 :(得分:2)
您显示的正常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?));