0

0

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

星降

星降

发布时间:2025-11-04 09:02:02

|

873人浏览过

|

来源于php中文网

原创

定义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

JSON.NET 简单的使用 中文WORD版
JSON.NET 简单的使用 中文WORD版

本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

下载
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 等库优化。
基本上就这些。这种方法简单直接,适合大多数中小型项目使用。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

318

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

232

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

436

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

751

2023.08.22

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

44

2025.12.04

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

318

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

538

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

53

2025.08.29

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 48万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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