定义Person类包含Name和Age属性;2. 使用反射遍历DataTable行与列,通过GetProperty匹配属性并转换值类型,支持可空类型;3. 调用DataTableToList方法将DataTable转为List<Person>并输出结果;4. 注意列名需与属性名一致,性能敏感场景建议优化。该方法适用于中小型项目。

在 .NET 中,将 DataTable 转换为 List<T> 是一个常见需求,尤其在处理数据库查询结果时。最常用的方式是通过反射(Reflection)将 DataTable 的每一行映射到一个强类型的对象中。
1. 定义目标类(Model)
假设你有一个 DataTable,包含姓名和年龄字段,先创建对应的类:
public class Person { public string Name { get; set; } public int Age { get; set; } }2. 使用反射实现转换方法
下面是一个通用方法,可将任意 DataTable 转为 List<T>:
using System; using System.Collections.Generic; using System.Data; using System.Reflection; public static List3. 使用示例
调用这个方法非常简单:
// 假设 dt 是你的 DataTable DataTable dt = GetDataTable(); // 模拟获取数据 List4. 注意事项
- 列名必须与类的属性名完全匹配(包括大小写)。
- 支持可空类型(如 int?、DateTime?),代码中已做兼容处理。
- 性能敏感场景建议使用表达式树或手动映射提升效率。
- 如果字段多或数据量大,可以考虑使用 AutoMapper 或 FastMember 等库优化。









