我有一个数据表,其中包含不同数据类型的列(主要是int64和字符串)。
我正在尝试将此数据表转换为对象列表。
为此,我使用以下方法:
当试图将类型为string的datacolumn值转换为类型为Decimal的类属性时,下面的GetItem()方法(更精确地说是pro.SetValue())会引发异常("类型为'System.String'的对象无法转换为类型'System.Decimal'")。
这里是
有人能指导我克服我面临的障碍吗?
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;
}
当试图将类型为string的datacolumn值转换为类型为Decimal的类属性时,下面的GetItem()方法(更精确地说是pro.SetValue())会引发异常("类型为'System.String'的对象无法转换为类型'System.Decimal'")。
private static T GetItem<T>(DataRow dr)
{
Type temp = typeof(T);
T obj = Activator.CreateInstance<T>();
foreach (DataColumn column in dr.Table.Columns)
{
foreach (PropertyInfo pro in temp.GetProperties())
{
if (pro.Name == column.ColumnName)
pro.SetValue(obj, dr[column.ColumnName], null);
else
continue;
}
}
return obj;
}
这里是
MyClass
,它什么都不是。public class AgriSales
{
public Int64 Id { get; set; }
public string Type { get; set; }
public Decimal Cost { get; set; }
}
有人能指导我克服我面临的障碍吗?