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

news/2024/11/19 11:43:56/
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.ppmy.cn/news/1548222.html

相关文章

版本控制【Git Bash】【Gitee】

目录 一、什么是版本控制&#xff1f; 二、版本控制的种类&#xff1a; 1、本地版本控制 2、集中版本控制 3、分布式版本控制 三、下载Git Bash 四、Git Bash 配置 五、Git Bash使用 1、切换目录&#xff1a;cd 2.查看当前文件路径&#xff1a;pwd 3.列出当前目录下文件…

工具类-基于 axios 的 http 请求工具 Request

基于 axios 的 http 请求工具 基于 axios 实现一个 http 请求工具&#xff0c;支持设置请求缓存和取消 http 请求等功能 首先实现一个 简单的 http 请求工具 import axios, {AxiosError,AxiosInterceptorManager,AxiosRequestConfig,AxiosResponse, } from axios;// 接口返回…

51单片机基础04 LCD1602时序;Proteus仿真单片机、总线、网络标号等;

目录 一、LCD显示字符 1、写指令 &#xff08;1&#xff09;、LCD状态配置 &#xff08;2&#xff09;、显示开关与光标 2、写数据 &#xff08;1&#xff09;、设置地址 &#xff08;2&#xff09;、设置数据 3、初始化代码 &#xff08;1&#xff09;、初始化流程 …

Halcon 3D平面度

平面度是对表面形状的一种度量&#xff0c;用于指示该表面上的所有点是否都在同一个平面上。平面度在几何尺寸和公差&#xff08;GD&T&#xff09;中用平行四边形表示&#xff0c;当两个表面必须装配在一起形成紧密密封时&#xff0c;平面度就特别有用。 使用平面度公差是…

DOM NodeList 对象简介

DOM NodeList 对象简介 1. 概述 DOM&#xff08;文档对象模型&#xff09;是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化表示&#xff0c;并定义了一种方式来访问和操作文档的各个部分。在 DOM 中&#xff0c;NodeList 是一个重要的接口&#xff0c;它表示节点的集…

Hadoop高可用集群工作原理

Hadoop HA集群工作原理详解 Hadoop HA集群工作原理详解概述各组件的作用1. NameNode2. ResourceManager3. JournalNode4. NodeManager5. DataNode6. ZooKeeper 配合工作方式NameNode HA工作流程ResourceManager HA工作流程JournalNode工作流程NodeManager工作流程DataNode工作流…

PyTorch和TensorFlow和Keras

PyTorch和TensorFlow PyTorch 和 TensorFlow 是当前最流行的两个深度学习框架&#xff0c;它们在深度学习社区中各有千秋&#xff0c;并且各自有不同的特点、优劣势。下面是这两者的详细比较&#xff0c;帮助你了解它们的异同。 1. PyTorch 简介 PyTorch 是由 Facebook&…

023、ELK 从入门到实践

ELK 从入门到实践 第一章&#xff1a;ELK基础概念 1.1 为什么需要ELK? 传统日志处理的痛点 日志分散 应用部署在不同服务器需要逐个登录查看无法统一管理 查询困难 只能用grep等命令无法复杂检索分析效率低 展示受限 纯文本格式无法可视化难以直观展示 ELK的解决方案 集…