在表达式树中转换为Nullable Decimal

时间:2016-02-06 08:12:05

标签: c# casting type-conversion nullable

我的模型有Nullable十进制类型。所以在我的表情树中,它给了我以下错误:

  

没有为类型定义二元运算符Equal   'System.Nullable`1 [System.Decimal]'和'System.Decimal'

现在我想将字符串转换为十进制?为此我尝试过:

decimal? res = Convert.ToDecimal(mystr); // this gives me type as System.Decimal

我还查看了thisthisthisthis的答案。它们都将它转换为System.Decimal类型,我的表达式树给出了上面提到的错误。

我真的需要将它们转换为System.Nullable(System.Decimal)才能为我工作。

我该如何解决?我的模型是从Entity Framework EDMX生成的,因此我无法更改其类型。我必须在代码中进行转换。

1 个答案:

答案 0 :(得分:2)

您显示的正常C#代码示例转换为decimal?,使用从TT?的隐式转换为任何不可为空的值输入T

在表达式树中,您只需使用Expression.Convert来执行该转换,例如

// Assuming beforeConversion is an expression tree with a type of
// decimal
var converted = Expression.Convert(beforeConversion, typeof(decimal?));