如何确定和更改属性类型

时间:2016-11-18 19:34:08

标签: c# asp.net-mvc-4

需要帮助,我尝试了一些不同的解决方案,但没有运气,我有一个数据模型:

public class ReceivingDataTableModel
{
    [Display(Name ="[[[Serial Number]]]")]
    public int DT_RowId { get; set; }
}

我需要从数据库获得结果,但是在这一行:

var converted = Expression.Convert(Expression.Constant(value), property.Type);

值为String,property.Type为Int(DT_RowId)

我收到此错误消息:

  

在类型system.String和。之间没有定义强制运算符   system.int32

1 个答案:

答案 0 :(得分:0)

你在那条线上做的事情可能完全不是你想要的。 Expression.Convert用于在运行时构造类型转换运算符,详见here

如果需要将String类型的内容转换为Int32类型,则需要使用Int32.Parse方法,如下所示

Int32 value = Int32.Parse("2016");

有关此方法的其他信息以及其他一些更详细的转换信息,请参阅here。 Double(Double.Parse),Decimal(Decimal.Parse)和其他原始类型存在类似的方法。

修改 如果您希望能够将其用作LINQ expersion,可以尝试使用此示例中使用的代码:

String value = "10";

var expr = Expression.Lambda(Expression.Call(typeof(Int32).GetMethod("Parse", new Type[] { typeof(String) }), Expression.Constant(value)));

Int32 result = (Int32)expr.Compile().DynamicInvoke();