我正在寻找一个库(最好是nuget),它将具有与通用对象匹配的列名的数据表转换为该对象的列表。例如,如果我有一个班级:
public class foo{
public string bar{get;set;}
public int count{get;set;}
}
和数据表
+---------+-------+
| bar | count |
+---------+-------+
| string1 | 1 |
| string2 | 5 |
+---------+-------+
能够调用类似
的内容List<foo> foos =DTSerializer.Deserialize<foo>(dt).ToList();
答案 0 :(得分:-1)
为nullable和for
增强此扩展代码public static List<T> MapTableToList<T>(this DataTable table) where T : new()
{
List<T> result = new List<T>();
var Type = typeof(T);
foreach (DataRow row in table.Rows)
{
T item = new T();
foreach (var property in Type.GetProperties())
{
if(table.Columns.IndexOf(property.Name) > -1)
{
if (row[table.Columns[property.Name]] == System.DBNull.Value && property.GetMethod.ReturnType.Name.IndexOf("Nullable") > -1)
{
property.SetMethod.Invoke(item, new object[] { null });
}
else
{
property.SetMethod.Invoke(item, new object[] { row[table.Columns[property.Name]] });
}
}
}
result.Add(item);
}
return result;
}