Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PropertyInfo.SetValue无法将字符串转换为十进制_C#_Asp.net_.net_Asp.net Mvc - Fatal编程技术网

C# PropertyInfo.SetValue无法将字符串转换为十进制

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>

我有一个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>(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);