2 回答
TA贡献1858条经验 获得超8个赞
通用转换:
public DataTable ListToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
{
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
}
table.Rows.Add(row);
}
return table;
}
TA贡献1818条经验 获得超7个赞
你的问题是你在它的开头添加。您所要做的是实例化它,然后分配值,最后将其添加到数据表中。 此外,将添加信息更改为下一行DataRowdr[f.Name] = f.GetValue(o, null);
代码如下:
public static DataTable ObjectToData(object o)
{
DataTable dt = new DataTable("OutputData");
DataRow dr = dt.NewRow();
o.GetType().GetProperties().ToList().ForEach(f =>
{
try
{
f.GetValue(o, null);
dt.Columns.Add(f.Name, typeof(string));
dr[f.Name] = f.GetValue(o, null);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
});
dt.Rows.Add(dr);
return dt;
}
您可以在此处找到一个示例 https://dotnetfiddle.net/EeegHg
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报