C#动态操作DataTable(新增行、列、查询行、列等)

public void CreateTable()
        {
            //创建表
            DataTable dt = new DataTable();
           
            //1、添加列
            dt.Columns.Add("Name", typeof(string)); //数据类型为 文本
//2、通过列架构添加列
            DataColumn age = new DataColumn("Age", typeof(Int32));   //数据类型为 整形
            DataColumn Time = new DataColumn("Time", typeof(DateTime)); //数据类型为 时间
            dt.Columns.Add(age);
            dt.Columns.Add(Time);
//1、添加空行
            DataRow dr1 = dt.NewRow();
            dt.Rows.Add(dr1);
//2、添加空行
            dt.Rows.Add();
//3、添加数据行
            DataRow dr2 = dt.NewRow();
            dr2[0] = "张三"; //通过索引赋值
            dr2[1] = 23;
            dr2["Time"] = DateTime.Now;//通过名称赋值
            dt.Rows.Add(dr2);
//4、通过行框架添加
            dt.Rows.Add("李四",25,DateTime.Now);//Add你们参数的数据顺序要和dt中的列顺对应
}
方法二:为已有DateTable添加一新列,其值可设为默认值,也可设这列不可为空。
public void CreateTable(DataTable vTable)
        {
            //为已有DataTable添加一新列
            DataColumn dc1 = new DataColumn("Tol", typeof(string));
            vTable.Columns.Add(dc1);
//添加一新列,其值为默认值
            DataColumn dc2 = new DataColumn("Sex", typeof(string));
            dc2.DefaultValue = "男";
            dc2.AllowDBNull = false;//这在创建表的时候,起作用,在为已有表新增列的时候,不起作用
            vTable.Columns.Add(dc2);
        }
方法三:筛选DataTable中的数据,使用 Select()方法,把赛选结果可以保存到 DataRow[] drArr; 数据里面,也可以另存为一个新DataTable
public void SelectRowDataTable()
        {
            DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FROM T1"查询出来的结果
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["C1"].ToString() == "abc")//查询条件
                {
                    //进行操作
                }
            }
            //但这种做法用一两次还好说,用多了就累了。那有没有更好的方法呢?就是dt.Select(),上面的操作可以改成这样:
DataRow[] drArr = dt.Select("C1='abc'");//查询(如果Select内无条件,就是查询所有的数据)
//还可以这样操作:
            DataRow[] drArr1 = dt.Select("C1 LIKE 'abc%'");//模糊查询(如果的多条件筛选,可以加 and 或 or )
            DataRow[] drArr2 = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC");//另一种模糊查询的方法
            DataRow[] drArr3 = dt.Select("C1='abc'", "C2 DESC");//排序
//问题又来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:
            DataTable dtNew1 = dt.Clone();
            for (int i = 0; i < drArr.Length; i++)
            {
                dtNew1.Rows.Add(drArr[i]);
            }
           
            //但这样程序就会出错,说该DataRow是属于其他DataTable的,那要怎么做呢?很简单,这样就可以解决了:
            DataTable dtNew2 = dt.Clone();
            for (int i = 0; i < drArr.Length; i++)
            {
                dtNew2.ImportRow(drArr[i]);//ImportRow 是复制
            }
        }
方法四:对DataTable筛选指定字段,并保存为新表
public void SelectColumnDataTable(DataTable dt)
        {
            //对DataTable筛选指定字段,并保存为新表。这些字段,确保dt中存在,否则会报错误
DataTable dtNew = dt.DefaultView.ToTable(false, new string[] { "列名", "列名", "列名" });
        }
方法五:对DataTable进行排序设置(sort)
public void SortDataTable(DataTable dt)
        {
            dt.DefaultView.Sort = "id desc";//重新设置排序
            DataTable dtNew = dt.DefaultView.ToTable(); //保存在一张新表中
        }

转载于:https://www.cnblogs.com/hu16683845/p/9910269.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用IntelliJ IDEA 配置Maven(入门)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 下载Maven 官方地址&#xff1a;http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置本地仓库路径 3.配…

[算法]不使用*、/、+、-、%操作符求一个数的1/3

摘要&#xff1a;算法一直是程序员进阶的一道龙门&#xff0c;通常算法都是为了更高效地解决问题而创造的&#xff0c;但也有的只是出于学术性&#xff0c;并不在意其实际意义。这是近日在国外技术问答网站stackoverflow的一个热门问题&#xff0c;不知道你能给出几种解决方法&…

2022届互联网秋招备战

文章目录1、何为秋招&#xff1f;1.1应届生身份1.2秋招、春招、校招1.3、社招、海投2.秋招信息如何获取&#xff1f;3、如何备战秋招&#xff1f;3.1、简历&#xff08;ps做简历&#xff09;3.2、笔试准备3.3、面试准备4、日常实习和暑假实习&#xff1f;1、春招≠暑期实习2、什…

php 两变量值互换 方法

//方法一&#xff1a;$a "abc";$b"def";$a $a^$b;$b $b^$a;$a $a^$b;//方法二&#xff1a;list($a, $b) array($b, $a);//方法三&#xff1a;$a $a . $b;$b strlen( $b );$b substr( $a,0,(strlen($a)- $b ));$a substr( $a, strlen($b));//方法四&…

MySQL5.7 group by新特性,报错1055

项目中本来使用的是mysql5.6进行开发&#xff0c;切换到5.7之后&#xff0c;突然发现原来的一些sql运行都报错&#xff0c;错误编码1055&#xff0c;错误信息和sql_mode中的“only_full_group_by“关&#xff0c;到网上看了原因&#xff0c;说是mysql5.7中only_full_group_by这…

IDEA中多行注释及取消注释快捷键

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、一次性添加多行注释的快捷键 首先选中要注释区域&#xff0c;然后 ctrl/ 这个是多行代码分行注释&#xff0c;每行一个注释…

为什么程序员不擅长估算时间?

摘要&#xff1a;时间估算是困难的&#xff0c;每一个程序员都有一个现实的估计区间&#xff0c;低于这个区间的估计意味着&#xff08;构件&#xff0c;测试&#xff0c;检查代码的&#xff09;时间开销被低估了&#xff0c;超过这个区间的估计意味着这个任务太大而很难预估。…

red hat enterprise linux 7关闭防火墙的方法

2019独角兽企业重金招聘Python工程师标准>>> red hat enterprise linux 7发布后&#xff0c;发现防火墙也变了&#xff0c;如何关闭防火墙呢&#xff0c;下面是方法 1.查看firewall的状态 [rootsztech7 ~]# systemctl status firewalld firewalld.service - firewal…

IOS —— 网络那些事(上) - http协议

作为一名并不太合格的程序员&#xff0c;今天要分享学习的成果&#xff0c;竟然讲的是网络相关HTTP协议的事情。&#xff08;也算是复习了&#xff09; 乍看HTTP协议的内容着实是十分复杂的&#xff0c;涉及到十分多互联网"底层"框架的东西。今天就先撇开这部分详细内…

【最新版】Java速成路线(急于找工作!)

文章目录计算机网络分层结构TCP/UDPHTTP/HTTPS状态码Cookie 和 SessionURI和URL操作系统线程和进程数据结构和算法数据结构算法设计模式&#xff08;23种&#xff09;单例工厂代理适配器观察者模板实操工具Git/SVNMaven/GradleLinux基本操作NginxELKpostmanJAVA基础语言基础JVM…

Java Web Start实例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 JWS让用户可以下载服务器端的Java Application到本机运行&#xff0c;并且没有安装、配置等繁琐的操作JWS的运行原理&#xff1a;浏览器…

老派程序员——徒手实现伟大成就

摘要&#xff1a;本文介绍了三位非常著名的程序员&#xff1a;Ken Thompson,Joe Armstrong 和 Jamie Zawinski&#xff0c;他们是如何发明一门新语言&#xff0c;他们开发软件时会像我们一样使用当今流行的开发工具吗&#xff1f;当读Peter Seibel的精彩著作《编程人生:15位软件…

互联网大厂项目研发流程

文章目录阶段一&#xff1a;阶段二&#xff1a;阶段三&#xff1a;阶段四&#xff1a;阶段五&#xff1a;开发人员&#xff1a;测试人员&#xff1a;设计师&#xff1a;阶段六&#xff1a;阶段七&#xff1a;总结&#xff1a;本文章学习自&#xff1a;https://www.bilibili.com…

centos常见错误 Failed to set locale, defaulting to C

错误描述&#xff1a; 当在centos中使用yum命令时&#xff0c;输出错误&#xff1a; [rootlocalhost yum.repos.d]# yum list |grep prceFailed to set locale, defaulting to C 用locale检测&#xff0c;出现如下提示&#xff1a; rootlocalhost yum.repos.d]# localelocale: …

图片上传知识点梳理

在日常项目开发中&#xff0c;图片上传是一个十分常见的场景。而现在的各种UI框架都提供了自己的上传组件&#xff0c;网上第三方的上传组件也多如牛毛。可能你早已习惯了直接使用这些现成的组件&#xff0c;然而对于其具体的实现&#xff0c;却并未深入解析。本文将通过简单的…

解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错&#xff1a;Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神说】JVM

文章目录1.JVM的位置2.JVM的体系结构3.类加载器4.双亲委派机制&#xff08;重要&#xff09;5.沙箱安全机制(了解)6.native&#xff08;核心&#xff09;7.PC寄存器&#xff08;了解&#xff09;8.方法区9.栈10.三种JVM11.堆&#xff08;Heap&#xff09;12.新生区、老年区13.永…

我们真的需要统一的编程规范?

摘要&#xff1a;仁者见仁智者见智&#xff0c;编码风格的不同&#xff0c;对项目也会有不同的影响&#xff0c;统一的编码规范有益于项目的维护。俗话说&#xff0c;没有规矩不成方圆&#xff0c;在2004年&#xff0c;UNIX创始人之一的Ken Arnold就发表了一篇很幽默文章&#…

百度云重磅发布ABC 3.0 尹世明如何诠释百度云的“新”打法

雷锋网9月4日消息&#xff0c;2018百度云智峰会正式召开&#xff0c;百度总裁张亚勤发表题为《新技术驱动&#xff0c;全面进入Cloud2.0》的演讲并表示&#xff0c;经历了PCClient/Server到MobileCloud 1.0&#xff0c;再到如今的AICloud 2.0过程&#xff0c;新技术推动云计算产…

EcmaScript对象克隆之谜

先谈谈深拷贝 如何在js中获得一个克隆对象&#xff0c;可以说是喜闻乐见的话题了。相信大家都了解引用类型与基本类型&#xff0c;也都知道有种叫做深拷贝的东西&#xff0c;传说深拷贝可以获得一个克隆对象&#xff01;那么像我这样的萌新自然就去学习了一波&#xff0c;我们能…