如何将列表转换为数据表

时间:2010-07-27 13:33:10

标签: asp.net

  

可能重复:
  .NET - Convert Generic Collection to DataTable

喜 我想将list数据类型转换为datatype。 我写了这个函数

static DataTable ListToDataTable<T>(IEnumerable<T> list)
        {
            var dt = new DataTable();

            foreach (var info in typeof(T).GetProperties())
            {
                dt.Columns.Add(new DataColumn(info.Name, info.PropertyType));
            }
            foreach (var t in list)
            {
                var row = dt.NewRow();
                foreach (var info in typeof(T).GetProperties())
                {
                    row[info.Name] = info.GetValue(t, null);
                }
                dt.Rows.Add(row);
            }
            return dt;
        }

但这是抛出异常“DataSet不支持System.Nullable&lt;&gt;” 我们如何解决这个问题还是有其他解决方案

1 个答案:

答案 0 :(得分:0)

试一试......

// When building table
Type pt = info.PropertyType;
if(pt.IsGenericType && pt.GetGenericTypeDefinition()==typeof(Nullable<>))
    pt = Nullable.GetUnderlyingType(pt);
}
dt.Columns.Add(new DataColumn(info.Name, pt)); 

// When loading table
row[info.Name] = info.GetValue(t, null) ?? DBNull.Value;