C# 实现Table的Merge,Copy和Clone

C#实现的对两个Table进行Merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义。如下是对两个table进行Merge的详细代码:

private void button1_Click(object sender, EventArgs e)//Button点击触发事件
    {
      #region Table的Merge
      DataTable dt = new DataTable();

      DataTable dt1 = new DataTable();//创建Table1
      dt1.Columns.Add("ID", typeof(string));
      dt1.Columns.Add("NAME",typeof(string));
      dt1.Columns.Add("AGE", typeof(int));
      dt1.Columns.Add("SEX", typeof(string));

      dt1.PrimaryKey = new DataColumn[] { dt1.Columns["ID"]};
      for (int i = 0; i < 5; i++)
      {
        DataRow dr = dt1.NewRow();
        dr["ID"] = "00" + i.ToString();
        dr["NAME"] = "00-" + i.ToString();
        dr["AGE"] = 15 + i;
        dr["SEX"] = "M";
        dt1.Rows.Add(dr);

      }
      dt = dt1;

      DataTable dt2 = new DataTable();//创建Table2
      dt2.Columns.Add("ID", typeof(string));
      dt2.Columns.Add("NAME", typeof(string));
      dt2.Columns.Add("Course",typeof(string));
      dt2.Columns.Add("Score",typeof(int));

      dt2.PrimaryKey = new DataColumn[] { dt2.Columns["ID"] };
      for (int i = 0; i < 5; i++)
      {
        DataRow dr = dt2.NewRow();
        dr["ID"] = "00" + i.ToString();
        dr["NAME"] = "00-" + i.ToString();
        dr["Course"] ="C#";
        dr["Score"] = i + 80;
        dt2.Rows.Add(dr);
      }
      dt = dt2;
      dt1.Merge(dt2);

      //Copy
      var table1 = dt1.Copy();//Copy,复制表的结构以及数据
      //添加新的一行
      DataRow dr1 = table1.NewRow();
      dr1["ID"] = "005";
      dr1["NAME"] = "00-5";
      dr1["AGE"] = 15;
      dr1["SEX"] = "F";
      table1.Rows.InsertAt(dr1,2);//表的指定位置插入新增加的一行   

      table1.Columns.Add(new DataColumn() { ColumnName = "Memo", DataType = typeof(string) });//默認插入到最後一列
      table1.Columns["Memo"].SetOrdinal(0);//把插入的列移动到第一行

      int memoIndex = table1.Columns.IndexOf("Memo");//获取列的位置信息
      var isContainName = table1.Columns.Contains("NAME");//判断table中是否存在某列

      List<string> columnsNameList = new List<string>();//遍历获取table的所有列名
      foreach (DataColumn col in table1.Columns)
      {
        columnsNameList.Add(col.ColumnName);
      }

      table1.Columns.RemoveAt(memoIndex);//通过列名的索引进行移除
      table1.Columns.RemoveAt(2);//通过列名的索引进行移除

      table1.Columns.Remove("SEX");//通过列名进行移除,建议使后者

      string[] name = new string[table1.Rows.Count];//方法一:对表中的数据进行遍历输出
      string[] id = new string[table1.Rows.Count];
      for (int i = 0; i < table1.Rows.Count; i++)
      {
        name[i] = table1.Rows[i]["NAME"].ToString();
        id[i] = table1.Rows[i]["ID"].ToString();
      }

      table1.Clear();//清空表中的数据

      //Clone
      var table2 = dt2.Clone();//Clone,复制表的结构、约束信息

      #endregion

    }

以上就是C# 实现Table的Merge,Copy和Clone的详细内容,更多关于c# table Merge的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#读取Excel到DataTable的方法示例

    前提 在Windows下进行数据处理的时候最常见的情况莫过于读取Microsoft的Excel文件了,Excel的普及率惊人,是事实上的标准.以前的开发中我采用调用第三方类库 NPOI的方式来处理Excel.这个方式有两个缺点: 需要依赖第三方类库NPOI NPOI支持几乎全功能的Office条件,缺点就是复杂度也高. 如果只是简单的导入数据,完全可以有更加简单的方案,方案的限制条件为: 只支持Windows平台 只读取Excel文件 支持xls和xlsx文件格式 依赖 还是有依赖的 2007

  • C#实现Json转DataTable并导出Excel的方法示例

    本文实例讲述了C#实现Json转DataTable并导出Excel的方法.分享给大家供大家参考,具体如下: 需求:有一个log文件,需要整理成Excel,日志文件里面的数据都是json字符串 思路是,把Json字符串转换成DataTable,然后导出到Excel 在网上找了一些资料,整理了以下三种类型的Json 一.Json转换DataTable 1.处理简单Json: [{"mac":"20:f1:7c:c5:cd:80","rssi":&qu

  • C# DataTable常见用法汇总

    C# DataTable 的常见用法: (1)新建数据表. DataTable dt=new DataTable();如果带个String参数,此参数表示表名. (2)向表添加列. //数据库的Nvarchar等类型,在此可用String兼容.可不指明数据类型 DataColumn dc = new DataColumn("商品编号", typeof(system.string)); dt.Columns.Add(dc); (3)设置表特定行与列的数据值. dt.Rows[i].Set

  • C# ArrayList、HashSet、HashTable、List、Dictionary的区别详解

    在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你可以将任意多的数据Add到ArrayList里面.其内部维护的数组,当长度不足时,会自动扩容为原来的两倍. 但是ArrayList也有一个缺点,就是存入ArrayList里面的数据都是Object类型的,所以如果将值类型存入和取出的时候会发生装箱.拆箱操作(就是值类型与引用类型之间的转换),这个会影响程序性能

  • C# 实现TXT文档转Table的示例代码

    代码: public DataTable TXTToDataTable(string fileName, string columnName) { DataTable dt = new DataTable(); FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); StreamReader sr = new StreamReader(fs, System.Text

  • C#中DataTable 转实体实例详解

    因为Linq的查询功能很强大,所以从数据库中拿到的数据为了处理方便,我都会转换成实体集合List<T>. 开始用的是硬编码的方式,好理解,但通用性极低,下面是控件台中的代码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo1 { class Pr

  • C# DataTable与Model互转的示例代码

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where T : new() { /// <summary> /// List泛型转换DataTable. /// </summary> public DataTable ListToDataTable<T>(List<T> items) { var tb = new D

  • C#使用Datatable导出Excel

    本文实例为大家分享了C#使用Datatable导出Excel的具体代码,供大家参考,具体内容如下 using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using Newtonsoft.Json; namespace EasyFrame.Com

  • 详解C#把DataTable中数据一次插入数据库的方法

    现在实际的情况是这样的: 客户有一台打卡机,员工打卡的信息全部储存在打卡机的Access数据库里面,现在客户引入了一种新的管理系统,需要将Access数据库中的打卡数据同步到SQL Server数据库中,由于时间比较久,数据积累了有40多万条. 软件功能: 选择Access数据库文件,填入目标SQL Server数据库的IP地址,然后开始进行同步. 实现方法: 1.先把Access数据库中要导入的数据存入DataTable中 配置文件中的数据库连接字符串 <connectionStrings>

  • C# 实现Table的Merge,Copy和Clone

    C#实现的对两个Table进行Merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义.如下是对两个table进行Merge的详细代码: private void button1_Click(object sender, EventArgs e)//Button点击触发事件 { #region Table的Merge DataTable dt = new DataTable(); DataTable dt1 = new DataTable();//创建Table1 dt1.Col

  • 深入理解JavaScript中的对象复制(Object Clone)

    JavaScript中并没有直接提供对象复制(Object Clone)的方法.因此下面的代码中改变对象b的时候,也就改变了对象a. a = {k1:1, k2:2, k3:3}; b = a; b.k2 = 4; 如果只想改变b而保持a不变,就需要对对象a进行复制. 用jQuery进行对象复制 在可以使用jQuery的情况下,jQuery自带的extend方法可以用来实现对象的复制. a = {k1:1, k2:2, k3:3}; b = {}; $.extend(b,a); 自定义clone

  • jQuery中extend函数的实现原理详解

    extend()是jQuery中一个重要的函数,作用是实现对对象的扩展, 它经常用于jQuery插件的开发,jQuery内部也使用它来扩展属性方法,如上篇文章中讲到的noConflict方法,就是用extend方法来扩展的. 在jQuery的API手册中,我们看到,extend实际上是挂载在jQuery和jQuery.fn上的两个不同方法,尽管在jQuery内部jQuery.extend()和jQuery.fn.extend()是用相同的代码实现的,但是它们的功能却不太一样.来看一下官方API对

  • jQuery中extend函数详解

    在jQuery的API手册中,我们看到,extend实际上是挂载在jQuery和jQuery.fn上的两个不同方法,尽管在jQuery内部jQuery.extend()和jQuery.fn.extend()是用相同的代码实现的,但是它们的功能却不太一样.来看一下 官方API对extend 的解释: 代码如下: 复制代码 代码如下: jQuery.extend(): Merge the contents of two or more objects together into the first

  • 编写高性能JavaScript(译)

    译者按:本人第一次翻译外文,言语难免有些晦涩,但尽量表达了作者的原意,未经过多的润色,欢迎批评指正.另本文篇幅较长.信息量大,可能难以消化,欢迎留言探讨细节问题.本文主要关注V8的性能优化,部分内容并不适用于所有JS引擎.最后,转载请注明出处: ) ========================译文分割线=========================== 很多JavaScript引擎,如Google的V8引擎(被Chrome和Node所用),是专门为需要快速执行的大型JavaScript应

  • jquery的总体架构分析及实现示例详解

    jQuery整体框架甚是复杂,也不易读懂,这几日一直在研究这个笨重而强大的框架.jQuery的总体架构可以分为:入口模块.底层模块和功能模块.这里,我们以jquery-1.7.1为例进行分析. jquery的总体架构 复制代码 代码如下: 16 (function( window, undefined ) {          // 构造 jQuery 对象   22     var jQuery = (function() {   25         var jQuery = functio

  • jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系统的好好写写,但是会先从感兴趣的部分开始. 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上.请体谅一下. 3. 构造jQuery对象 3.1 源码结构 先看看总体结构,再做分解: 复制代码 代码如下: (funct

  • SpringBoot如何基于POI-tl和word模板导出庞大的Word文件

    目录 前言 知识准备 什么是poi-tl poi-tl的TDO模式 Template:模板 Data-model:数据 Output:输出 实现案例 Pom依赖 导出基于template的word 导出markdown为word 前言 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性.本文主要介绍通过SpringBoot集成poi-tl实现模板方式的Word导出功能. 知识准备 需要理解文件上

  • 写自已的js类库需要的核心代码

    复制代码 代码如下: (function(win) { var toString = Object.prototype.toString; var hasOwn = Object.prototype.hasOwnProperty; var class2type = {}; class2type["[object Boolean]"] = "boolean"; class2type["[object Number]"] = "number

  • oracle表空间表分区详解及oracle表分区查询使用方法

    此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间

随机推荐