删除内存中DataTable表的重复行

假设在内存中(不是数据库中)有两个表:

表一:TableA

Name

Phone

张三

123456

李四

123457

王五

1234568

表二:TableB

Name

Phone

张三

123456

李四2

123465

王五2

123466

现在要求把这两个表按照手机号去重后合并。

方法一:

观察后发现,这两个表有重复项:TableA中的“张三”和TableB中的“张三”。

我们可以用算法在程序中遍历两个表去重,对比之后再放入新的表中,返回新表,这个方法可行,不过数据量大的时候性能就会特别差,耗时很高。

方法二:

我们可以用.net提供的Linq查询做,很方便。参考:http://blog.csdn.net/q107770540/article/details/6252339

方法三:

我们可以用“筛选视图”做,比较方便。

首先,建一个TableC,把字段“Phone”设为主键,把第一个表的架构和数据复制到新建的TableC中,然后把第二个表合并到TableC中,最后用DefaultView.ToTable方法去重,返回TableC即可。源码如下:

/// <summary>

/// 合并数据

/// </summary>

/// <param name="TableA">表一</param>

/// <param name="TableB">表二</param>

/// <returns></returns>

public DataTable MergeData(DataTable TableA, DataTable TableB)

{

DataTable TableC = new DataTable();

TableC = TableA.Copy();//复制架构和数据

TableC.PrimaryKey = new DataColumn[1] { TableC.Columns["Phone"] };//设置主键

TableC.Merge(TableB);//合并B表

TableA.Dispose();

TableB.Dispose();

//要保留的字段

string[] Colomns = new string[] { " Name ","Phone"};

//已去重的表

TableC = TableC.DefaultView.ToTable(true, Colomns);

return TableC;

}

内存中DataTable去除重复行的更多相关文章

  1. DataTable去除重复行

    //抽取dt中的特定列"Region","Cur","Year"组合成新的dat DataTable dat = dt.DefaultVie ...

  2. DataTable去除重复行,根据某一字段进行distinct

    网上有很多方法,比如利用视图处理: //去掉重复行 DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { & ...

  3. c#中,DataTable 过滤重复行

    虽然网上有很多DataTable过滤重复行的方法,但是本菜还是认为自己写的这个方法最靠谱,这里的参数是传递的DataTable值,返回的是一个已经过滤相同字段StuId,ExamNum的DataTab ...

  4. 实例详细说明linux下去除重复行命令uniq

    地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但 ...

  5. uniq linux下去除重复行命令

    一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...

  6. 【shell】awk按域去除重复行

    首先解释一下什么叫“按域去除重复行”: 有的时候我们需要去除的重复行并不是整行都重复,两行的其中一列的元素相同我们有的时候就需要认定这两行重复,因此有了今天的内容. 去除重复行shell有一个原生命令 ...

  7. linux命令(47):Linux下对文件进行按行排序,去除重复行

    Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...

  8. uniq 去除重复行

    1.命令功能 uniq可以输出或忽略文件中的重复行,经常需要使用sort先对文件进行排序,然后使用uniq去重并计数. 2.语法格式 uniq  option  input uniq   选项    ...

  9. linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计

    转自:http://blog.sina.com.cn/s/blog_6797a6700101pdm7.html 去除重复行 sort file |uniq 查找非重复行 sort file |uniq ...

随机推荐

  1. SqlServer 数据库/数据表 拆分(分布式)【转】

    通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器 ...

  2. wifi文件传输

    步骤: 1.下载CocoaHTTPServer 2.解压后,将CocoaHTTPServer-master目录下的Core导入工程. 3.打开Samples/SimpleFileUploadServe ...

  3. linux之 crontab 定时任务

    crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查 ...

  4. python 数据库查询结果转对象

    #coding:utf-8 from json import dumps, loads, JSONEncoder, JSONDecoder import pickle from app.model.J ...

  5. Linux Skills

    ++实现RedHat非正常关机的自动磁盘修复先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下:AUTOFSCK_DEF_CHECK=yesPROMPT=yes ...

  6. About CoffeeScript

    本篇文章是对CoffeeScript做一个初步的了解.入门的学习笔记. 什么是CoffeeScript 一种新编程语言,是一套JavaScript的转译语言,可编译成高效的JavaScript.还可以 ...

  7. 分布式缓存系统 Memcached 工作线程初始化

    Memcached采用典型的Master-Worker模式,其核心思想是:有Master和Worker两类进程(线程)协同工作,Master进程负责接收和分配任务,Worker进程负责处理子任务.当各 ...

  8. CCPC2018-湖南全国邀请赛 G String Transformation

    G.String Transformation 题目描述 Bobo has a string S = s1 s2...sn consists of letter a , b and c . He ca ...

  9. 第六章 深入分析ClassLoader工作机制

    补充(非书中): Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件).类加载器负责读取Java字节代码,并转换成 java.lan ...

  10. js中的Array

    js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...