修复数据表以列出转换代码

时间:2015-05-12 11:50:19

标签: c# sql sql-server

我正在尝试将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;
    }
}
}

2 个答案:

答案 0 :(得分:3)

你的对象属性名称应该与column的名称类似。所以请更改对象的名称,类似于数据库表列的名称

因为此代码为那些在数据库中找到匹配列的属性赋值。

答案 1 :(得分:0)

我已经创建了一个类似的方法来做到这一点。确保为要转换的 DataTable 设置了模型,并将其作为类型传入。

begin
  <my program>
rescue => e
  binding.pry
end