我正在尝试将DataTable转换为List我在stackoverflow中找到了这段代码 我不幸地使用它 它渲染相同的行号但是空字段有人知道它有什么问题吗?
public static class Helper
{
/// <summary>
/// Converts a DataTable to a list with generic objects
/// </summary>
/// <typeparam name="T">Generic object</typeparam>
/// <param name="table">DataTable</param>
/// <returns>List with generic objects</returns>
public static List<T> DataTableToList<T>(this DataTable table) where T : class, new()
{
try
{
List<T> list = new List<T>();
foreach (var row in table.AsEnumerable())
{
T obj = new T();
foreach (var prop in obj.GetType().GetProperties())
{
try
{
PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(obj, Convert.ChangeType(row[prop.Name], propertyInfo.PropertyType), null);
}
catch
{
continue;
}
}
list.Add(obj);
}
return list;
}
catch
{
return null;
}
}
}
答案 0 :(得分:3)
你的对象属性名称应该与column的名称类似。所以请更改对象的名称,类似于数据库表列的名称
因为此代码为那些在数据库中找到匹配列的属性赋值。
答案 1 :(得分:0)
我已经创建了一个类似的方法来做到这一点。确保为要转换的 DataTable 设置了模型,并将其作为类型传入。
begin
<my program>
rescue => e
binding.pry
end