需要帮助,我尝试了一些不同的解决方案,但没有运气,我有一个数据模型:
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
答案 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();