C# DataTable映射成Entity
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Data; using System.Reflection; using System.Text; namespace TJCFinanceWriteOff.BizLogic.Common { public class DataTableUtil { /// <summary> /// 将DataRow转换为实体对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dr"></param> /// <returns></returns> public static T ConvertToEntity<T>(DataRow dr) where T : new() { T entity = new T(); Type info = typeof(T); var properties = info.GetProperties(); string columnName = string.Empty; object propName = DBNull.Value; foreach (var prop in properties) { //1.判断该属性是否可写 if (!prop.CanWrite) { continue; } //2.查看实体类是否有数据库相关特性,没有则以属性名作为名称 var attributes = prop.GetCustomAttribute<ColumnAttribute>(); if (attributes is null) { columnName = prop.Name; } else { columnName = attributes.Name ?? prop.Name; } if (!dr.Table.Columns.Contains(columnName)) { continue; } propName = dr[columnName]; if (propName != DBNull.Value) { //根据ColumnName,将dr中的相对字段赋值给Entity属性 prop.SetValue(entity, Convert.ChangeType(propName, prop.PropertyType), null); } } return entity; } /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dt"></param> /// <returns></returns> public static List<T> ToEntityList<T>(DataTable dt) where T : new() { List<T> list = new List<T>(dt.Rows.Count); foreach (DataRow dr in dt.Rows) { list.Add(ConvertToEntity<T>(dr)); } return list; } } }
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/11671428.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
分类:
开发填坑
如果文章内容对您有所帮助,欢迎赞赏.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!