.NET怎么将DataTable转换为List对象

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

.net怎么将datatable转换为list对象

在 .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>:

Swapface人脸交换
Swapface人脸交换

一款创建逼真人脸交换的AI换脸工具

Swapface人脸交换 45
查看详情 Swapface人脸交换
using System; using System.Collections.Generic; using System.Data; using System.Reflection; public static List DataTableToList(DataTable dt) where T : new() { List list = new List(); foreach (DataRow row in dt.Rows) { T item = new T(); foreach (DataColumn col in dt.Columns) { // 获取类中的属性 PropertyInfo prop = typeof(T).GetProperty(col.ColumnName); if (prop != null && prop.CanWrite) { object value = row[col]; if (value != DBNull.Value) { // 处理值类型转换(如 int?、DateTime? 等) Type propType = prop.PropertyType; if (Nullable.GetUnderlyingType(propType) is Type nullableType) propType = nullableType; object safeValue = Convert.ChangeType(value, propType); prop.SetValue(item, safeValue, null); } } } list.Add(item); } return list; }

3. 使用示例

调用这个方法非常简单:

// 假设 dt 是你的 DataTable DataTable dt = GetDataTable(); // 模拟获取数据 List people = DataTableToList(dt); foreach (var p in people) { Console.WriteLine($"姓名: {p.Name}, 年龄: {p.Age}"); }

4. 注意事项

  • 列名必须与类的属性名完全匹配(包括大小写)。
  • 支持可空类型(如 int?、DateTime?),代码中已做兼容处理。
  • 性能敏感场景建议使用表达式树或手动映射提升效率。
  • 如果字段多或数据量大,可以考虑使用 AutoMapperFastMember 等库优化。
基本上就这些。这种方法简单直接,适合大多数中小型项目使用。

以上就是.NET怎么将DataTable转换为List对象的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号