新闻中心

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

2025-11-04
浏览次数:
返回列表
定义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中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

JSON.NET 简单的使用 中文WORD版 0 查看详情 JSON.NET 简单的使用 中文WORD版 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对象的详细内容,更多请关注其它相关文章!


# 适用于  # 营销型网站建设医疗  # seo有活路吗  # 郑州seo搜索引擎营销  # 南山网站推广排名  # 网站建设的方法有  # 山东省建设厅网站链接  # 国内靠谱seo  # 网站推广优化网址有哪些  # 大学保卫网站建设方案  # 东莞石龙seo优化  # app  # 遍历  # 已有  # 序列化  # 文档  # 的是  # 重试  # 如何实现  # 是一个  # 转换为  # .net 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 极兔快递快件信息查询系统 极兔快递官网运单号追踪  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  Win11网速慢怎么解决 Win11网络设置优化解除限速  Typer应用中动态命令行参数的解析与处理  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  msn官网入口地址手机版 msn官方网站手机最新链接  快手极速版在线观看 官方网页版登录地址  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  Archive of Our Own官网直达 AO3最新可用地址一览  AO3最新入口2025公告_AO3中文官网合集  ACG动漫视频网入口 ACG动漫*免费正版观看地址  2026春节假期票务安排_2026春节放假购票指南  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  163邮箱官方主页登录 直达网易邮箱登录核心页面  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  Win11怎么修改默认浏览器_Windows 11设置Chrome为默认  Golang如何使用const iota_Go iota常量计数器讲解  零跑汽车11月交付量达70327台 实现连续9个月正增长  DLsite中文平台入口 DLsite官网内容在线查看  汽水音乐在线版入口_汽水音乐网页播放手册  抖音极速版最新版本 抖音极速版官方下载地址  自定义Bag-of-Words实现:处理带负号的词汇权重  VS Code远程开发时如何处理文件权限问题  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  Win11怎么关闭快速启动_Win11彻底关机设置教程  没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享  抖音网页版快捷访问 抖音网页版网页版入口操作教程  yandex入口引擎手机版 yandex安卓版下载入口  构建轻量级网站内部消息系统:Formspree 集成指南  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  韩剧圈正版入口页面_韩剧圈官网登录链接  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  在Go Martini框架中高效服务动态生成图像的实践指南  Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度  Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】  Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口  解决Flask中Quill编辑器内容提交失败及TypeError的指南  J*aScript设计模式实践_j*ascript代码优化  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  126邮箱网页版官方入口 126邮箱账号在线登录平台  优化Django表单:提交验证失败后保留用户输入 

搜索