0

My models have Nullable decimal types. So in my Expression trees it gave me the following error:

The binary operator Equal is not defined for the types 'System.Nullable`1[System.Decimal]' and 'System.Decimal'

Now I want to convert a string to decimal? and for that matter I have tried as:

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

I have also looked to the answers of this, this, this and this. They all convert it into type System.Decimal and my expression trees gave the error mentioned above.

I really need to convert them to System.Nullable(System.Decimal) to work for me.

How can I work it out? My models are generated from Entity Framework EDMX so I cannot change their types. I have to do the conversion in the code.

Community
  • 1
  • 1
Awais Mahmood
  • 1,308
  • 4
  • 21
  • 51

1 Answers1

4

The normal C# code example you've shown has converted to decimal?, using the implicit conversion from T to T? for any non-nullable value type T.

In an expression tree, you just need to use Expression.Convert to perform that conversion, e.g.

// Assuming beforeConversion is an expression tree with a type of
// decimal
var converted = Expression.Convert(beforeConversion, typeof(decimal?));
Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194