c#怎么把datatable转为list
时间: 2023-04-22 10:00:42 浏览: 135
可以使用LINQ语句将DataTable转换为List。
以下是示例代码:
```
DataTable dt = new DataTable();
// 填充DataTable
List<DataRow> drList = dt.AsEnumerable().ToList();
List<YourClass> yourList = drList.Select(x => new YourClass
{
Property1 = x.Field<string>("ColumnName1"),
Property2 = x.Field<int>("ColumnName2"),
// 其他属性
}).ToList();
```
其中,YourClass是你自己定义的类,用于存储DataTable中的数据。在Select方法中,使用x.Field<T>方法获取每一列的值,并将其赋值给YourClass的属性。最后使用ToList方法将结果转换为List。
相关问题
C#怎么将datatable转为实体类
可以使用反射来实现将 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 表示要转换的实体类类型。
阅读全文