首页 > 编程语言 >c#中DataTable转List的2种方法示例

c#中DataTable转List的2种方法示例

时间:2024-01-14 10:05:22浏览次数:38  
标签:示例 c# List foreach new dt DataTable tempName

1.  直接写一个datatable转list的类

public List<Dictionary<string, object>> DatatoTable(DataTable dt)
{
 
    List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
    foreach (DataRow dr in dt.Rows)//每一行信息,新建一个Dictionary<string,object>,将该行的每列信息加入到字典
    {
        Dictionary<string, object> result = new Dictionary<string, object>();
        foreach (DataColumn dc in dt.Columns)
        {
            result.Add(dc.ColumnName, dr[dc].ToString());
        }
        list.Add(result);
    }
    return list;
}

 

2. 利用泛型来写,更加通用

public class TabletoList
    {
        public static List<T> TableToListModel<T>(DataTable dt) where T : new()
        {
            // 定义集合    
            List<T> ts = new List<T>();
 
            // 获得此模型的类型   
            Type type = typeof(T);
            string tempName = "";
 
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                // 获得此模型的公共属性      
                PropertyInfo[] propertys = t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    tempName = pi.Name;  // 检查DataTable是否包含此列    
 
                    if (dt.Columns.Contains(tempName))
                    {
                        // 判断此属性是否有Setter      
                        if (!pi.CanWrite) continue;
 
                        object value = dr[tempName];
                        if (value != DBNull.Value)
                            pi.SetValue(t, value, null);
                    }
                }
                ts.Add(t);
            }
            return ts;
        }
    }

第二个方法在使用的时候需要注意:T为自己定义的类,其中的属性需要与数据库对应

标签:示例,c#,List,foreach,new,dt,DataTable,tempName
From: https://blog.51cto.com/u_16371710/9238073

相关文章

  • C#中的数据库访问类DBHelper
    1、在配置文件中添加连接字符串首先在配置文件中的<configuration>中加入数据库连接字符串,配置文件后缀为.config,例如:App.config<connectionStrings><addname="你给此条链接起的名字,随便起,访问的时候可以用。比如:AAA"connectionString="DataSource=你的服务器地址;Init......
  • C#调用webapi发送带json参数的post请求
    嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个C#调用webapi发送带json参数的post请求拿数据的方法,所以来到这里记录一下///<paramname="url">请求地址</param>///<paramname="jsonParas">请求体</param>///<paramnam......
  • C#将从数据库查处的table格式的数据转为json
    这里的代码是封装好的类,将Datatable作为参数传进来即可解析出json格式的数据,看代码publicstaticstringToJson(DataTabledt){intcount=dt.Rows.Count;//将DataTable格式的数据转换成json格式StringBuilderjsonBuilder=ne......
  • C#实现串口通讯的方法
    帖子只用于记录本人的学习记录,算是给未来的自己出一份傻瓜式教学。 在C#语言上,一般上位机是由Winform开发,也有WPF,但是我不会WPF上位机无非就是发送数据与接收数据,可以使用C#的SerialPort方法winform自带SerialPort控件,可以将此控件直接拖到页面上,然后实例化该控件,也可以直接实例化......
  • C#中substring ()的用法
    String.SubString(int index,int length)  index:开始位置,从0开始   length:你要取的子字符串的长度  示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacestr_sub{classProgram{staticvoidMain(string[]args){strin......
  • C#常用工具安装方法及资源整理
    1、GitGit下载地址Git安装教程2、SQLServer2019下载地址安装教程3、VisualStudio2022下载地址安装教程4、TortoiseGit(x64)  2.13.0.1中文版下载地址安装教程5、sqlserver2014下载及安装教程......
  • Helm概述,安装,部署,chart模板使用
    Helm概述Helm是一个用于管理Kubernetes应用程序的工具,它提供了一个简单而有效的方式来定义、安装和部署应用程序。Helm通过使用可重复使用的模板(称为Charts)来描述应用程序的Kubernetes资源,并提供了一个命令行界面来管理这些Charts。Helm的核心概念包括:Chart:Chart是Helm的基本单元,它......
  • React-hook-form-mui(一):基本使用
    前言在项目开发中,我们选择了React+MUI作为技术栈。在使用MUI构建form表单时,我们发现并没有与antd类似的表单验证功能,于是我们选择了MUI推荐使用的react-hook-form-mui库去进行验证。但是发现网上关于这个库的使用方法和demo比较少且比较简单,并没有复杂的表单验证的demo。因此本文及......
  • Auto CAD
    快捷命令 L直线M移动C圆EL椭圆XL射线轴线RO旋转E删除H填充TR修剪EX延伸PO点S拉伸U返回DDI直径标注DAN角度标注OP系统选项设置A圆弧T多行文字B块定义I块插入W定义块文件CO复制MI镜像O偏移F倒直角或圆角D标注样式DLI线......
  • centos安装gcc 4.9.4 版本
    系统:centos7.6因为在安装hyperf热加载时需要用到fswatch,安装fswatch需要gcc4.9以上的版本,但是系统自带的gcc只有4.8的版本,所以我们需要安装4.9的,这里我安装的是4.9.4的版本:yuminstall-ygccgcc-c++#因为我有自带的gcc所以不用安装,如果没有的话。需要先安装yum自带的gcc......