c#将datatable转换为list
时间: 2023-09-06 07:07:40 浏览: 55
可以通过以下代码将 DataTable 转换为 List:
```csharp
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>();
foreach (DataRow row in dataTable.Rows)
{
Person person = new Person();
person.Id = (int)row["Id"];
person.Name = row["Name"].ToString();
person.Age = (int)row["Age"];
people.Add(person);
}
```
其中,`Person` 是要转换的实体类,`dataTable` 是要转换的 DataTable。遍历 DataTable 的每一行,将每一行的数据赋值给 Person 对象,然后添加到 List 中。
相关问题
C#实现DataTable转换为实体的方案
在 C# 中将 DataTable 转换为实体有多种方案,下面介绍其中比较常用的两种。
1. 使用反射实现
这种方法是通过使用反射获取 DataTable 中的列名和对应的值,然后通过反射将值赋给实体对象的属性。代码如下:
```csharp
public static List<T> DataTableToList<T>(DataTable dt) where T : new()
{
List<T> list = new List<T>();
foreach (DataRow dr in dt.Rows)
{
T t = new T();
PropertyInfo[] propInfos = t.GetType().GetProperties();
foreach (PropertyInfo propInfo in propInfos)
{
if (dt.Columns.Contains(propInfo.Name))
{
object value = dr[propInfo.Name];
if (value != DBNull.Value)
{
propInfo.SetValue(t, value, null);
}
}
}
list.Add(t);
}
return list;
}
```
使用示例:
```csharp
DataTable dt = GetDataTable();
List<MyEntity> list = DataTableToList<MyEntity>(dt);
```
2. 使用泛型类库实现
这种方法是通过使用泛型类库来实现 DataTable 转换为实体,例如使用 Dapper 类库。Dapper 是一个轻量级的 ORM 类库,可以方便地将数据从数据库中读取到实体对象中。使用 Dapper 类库将 DataTable 转换为实体的代码如下:
```csharp
public static List<T> DataTableToList<T>(DataTable dt) where T : new()
{
List<T> list = new List<T>();
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
list = conn.Query<T>("select * from @dt", new { dt = dt }).ToList();
}
return list;
}
```
使用示例:
```csharp
DataTable dt = GetDataTable();
List<MyEntity> list = DataTableToList<MyEntity>(dt);
```
注意:使用 Dapper 类库需要先安装 NuGet 包,在控制台中执行以下命令即可:
```bash
Install-Package Dapper
```
将datatable数据结构转换为list数据结构的C#代码
# 首先需要引入DataTable和List所在的命名空间
using System.Data;
using System.Collections.Generic;
// 定义一个函数,用于将DataTable转换为List
public List<Dictionary<string, object>> DataTableToList(DataTable dt)
{
// 定义一个List,用于存储转换后的数据
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
// 遍历DataTable中的每一行数据
foreach (DataRow row in dt.Rows)
{
// 定义一个字典,用于存储每一行数据的列名和对应的值
Dictionary<string, object> dict = new Dictionary<string, object>();
// 遍历每一列数据
foreach (DataColumn col in dt.Columns)
{
// 将列名和对应的值存储到字典中
dict.Add(col.ColumnName, row[col]);
}
// 将整行数据存储到List中
list.Add(dict);
}
// 返回转换后的List
return list;
}