当前位置: 首页 > article >正文

C# 用于将一个DataTable转换为Users对象的列表

1:第一种例子: 

/// <summary>
 /// 用户名循环赋值
 /// </summary>
 /// <param name="dt"></param>
 /// <returns></returns>
 public List<Users> FenPeiFillModelUsers(DataTable dt)
 {
     if (dt.Rows.Count == 0 || dt == null)
     {
         return null;
     }
     List<Users> Users = new List<Users>();
     foreach (DataRow dr in dt.Rows)
     {
         Users beiBu = new Users();
         for (int i = 0; i < dr.Table.Columns.Count; i++)
         {
             PropertyInfo info = beiBu.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
             if (info != null && dr[i] != DBNull.Value)
             {
                 info.SetValue(beiBu, dr[i], null);
             }
         }
         Users.Add(beiBu);
     }
     return Users;
 }
 

2:  第二种万能的方法,使用了泛型方法

  

 /// <summary>
    /// DataTable转List
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dataTable"></param>
    /// <returns></returns>
    private List<T> FillModel<T>(DataTable dataTable) where T : new()
    {
        if (dataTable == null || dataTable.Rows.Count == 0)
        {
            return null;
        }
        var dataList = new List<T>();
        foreach (DataRow row in dataTable.Rows)
        {
            var dataItem = new T();
            foreach (DataColumn column in dataTable.Columns)
            {
                var property = typeof(T).GetProperty(column.ColumnName);
                if (property != null && row[column] != DBNull.Value)
                {
                    property.SetValue(dataItem, Convert.ChangeType(row[column], property.PropertyType));
                }
            }
            dataList.Add(dataItem);
        }
        return dataList;
    }


http://www.kler.cn/a/387913.html

相关文章:

  • C语言第十一周课——函数的调用
  • JDBC-Dao层模式
  • C++数据结构算法学习
  • LeetCode【0018】四数之和
  • .NET中通过C#实现Excel与DataTable的数据互转
  • MIT 6.S081 Lab1: Xv6 and Unix utilities翻译
  • fastapi_socketio连接vue的socktio.client
  • prompt资料收集
  • 网络编程示例之网络基础知识
  • PVE纵览-备份与快照指南
  • uniapp+vue加油服务系统 微信小程序
  • 在一个项目的完整开发中,会涉及到多个 Git 命令
  • kafka面试夺命30问
  • 6:arm condition code flags详细的讲解
  • P5019 [NOIP2018 提高组] 铺设道路
  • volta多版本node管理工具
  • 「Mac畅玩鸿蒙与硬件30」UI互动应用篇7 - 简易计步器
  • 共享汽车管理:SpringBoot技术实现指南
  • ubuntu 22.04 如何调整进程启动后能打开的文件数限制
  • 基于Spring Boot+Vue的养老院管理系统【原创】
  • ElasticSearch备考 -- 集群配置常见问题
  • FPN(Feature Pyramid Network)
  • pytorch3d报错:RuntimeError: Not compiled with GPU support.
  • 后台管理系统窗体程序:文章管理 > 文章列表
  • ChatGPT键盘快捷键(按ctrl + /呼出)
  • JavaSE:运算符 (学习笔记)