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

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

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

在 .NET 中,将 DataTable 转换为 List 是一个常见需求,尤其在处理数据库查询结果时。最常用的方式是通过反射(Reflection)将 DataTable 的每一行映射到一个强类型的对象中。

1. 定义目标类(Model)

假设你有一个 DataTable,包含姓名和年龄字段,先创建对应的类:

public class Person { public string Name { get; set; } public int Age { get; set; } }

2. 使用反射实现转换方法

下面是一个通用方法,可将任意 DataTable 转为 List:

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 是你的 DataTableDataTable dt = GetDataTable(); // 模拟获取数据List people = DataTableToList(dt);foreach (var p in people){ Console.WriteLine($”姓名: {p.Name}, 年龄: {p.Age}”);}

4. 注意事项

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 17:51:25
下一篇 2025年12月17日 17:51:39

相关推荐

发表回复

登录后才能评论
关注微信