C# PropertyInfo.SetValue无法将字符串转换为十进制
我有一个datatable,它有不同数据类型的列(主要是int64和string)。 我正在尝试将此数据表转换为对象列表。 为此我使用了这些方法C# PropertyInfo.SetValue无法将字符串转换为十进制,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我有一个datatable,它有不同数据类型的列(主要是int64和string)。 我正在尝试将此数据表转换为对象列表。 为此我使用了这些方法 public static List<T> ConvertDataTable<T>(DataTable dt) { List<T> data = new List<T>(); foreach (DataRow row in dt.Rows) { T item = GetItem<T>
public static List<T> ConvertDataTable<T>(DataTable dt)
{
List<T> data = new List<T>();
foreach (DataRow row in dt.Rows)
{
T item = GetItem<T>(row);
data.Add(item);
}
return data;
}
这里是MyClass
那只不过是
public class AgriSales
{
public Int64 Id { get; set; }
public string Type { get; set; }
public Decimal Cost { get; set; }
}
有人能指导我克服我面临的障碍的正确方法吗?使用可以帮助你。但是,您可能需要为更复杂的类型实施相同的保护措施
pro.SetValue(obj, Convert.ChangeType(dr[column.ColumnName], pro.PropertyType), null);
你需要告诉我们抛出了什么异常。根据你的建议更新了我的帖子。它抛出ArgumentException,表示“System.String”类型的对象无法转换为“System.Decimal”类型。
pro.SetValue(obj, Convert.ChangeType(dr[column.ColumnName], pro.PropertyType), null);