C#怎么将datatable转为实体类
时间: 2023-09-15 19:18:41 浏览: 206
可以使用反射来实现将 DataTable 转换为实体类。
首先,需要定义一个实体类,该类的属性应该与 DataTable 的列名相同。
接下来,可以编写一个方法,该方法接受一个 DataTable 作为参数,并使用反射来将 DataTable 的数据转换为实体类的对象列表。具体实现方法如下:
```csharp
public static List<T> ConvertDataTableToList<T>(DataTable dt) where T : class, new()
{
List<T> list = new List<T>();
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
foreach (DataRow row in dt.Rows)
{
T obj = new T();
foreach (PropertyInfo property in properties)
{
if (dt.Columns.Contains(property.Name))
{
if (row[property.Name] != DBNull.Value)
{
property.SetValue(obj, row[property.Name], null);
}
}
}
list.Add(obj);
}
return list;
}
```
这个方法使用泛型参数 T 来指定要转换的实体类类型,并使用 typeof(T) 来获取该类型的 Type 对象。然后,使用 GetProperties() 方法获取该类型的所有属性信息。
在循环遍历 DataTable 的每一行时,创建一个新的实体类对象,并逐个遍历属性信息,使用 SetValue() 方法将 DataTable 的对应列值赋值给实体类对象的属性。
最后,将所有实体类对象添加到列表中,并返回该列表。
使用方法示例:
```csharp
DataTable dt = new DataTable();
// 填充DataTable
List<MyClass> list = ConvertDataTableToList<MyClass>(dt);
```
其中,MyClass 表示要转换的实体类类型。
阅读全文