内存中DataTable去除重复行
删除内存中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去除重复行的更多相关文章
- DataTable去除重复行
//抽取dt中的特定列"Region","Cur","Year"组合成新的dat DataTable dat = dt.DefaultVie ...
- DataTable去除重复行,根据某一字段进行distinct
网上有很多方法,比如利用视图处理: //去掉重复行 DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { & ...
- c#中,DataTable 过滤重复行
虽然网上有很多DataTable过滤重复行的方法,但是本菜还是认为自己写的这个方法最靠谱,这里的参数是传递的DataTable值,返回的是一个已经过滤相同字段StuId,ExamNum的DataTab ...
- 实例详细说明linux下去除重复行命令uniq
地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但 ...
- uniq linux下去除重复行命令
一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...
- 【shell】awk按域去除重复行
首先解释一下什么叫“按域去除重复行”: 有的时候我们需要去除的重复行并不是整行都重复,两行的其中一列的元素相同我们有的时候就需要认定这两行重复,因此有了今天的内容. 去除重复行shell有一个原生命令 ...
- linux命令(47):Linux下对文件进行按行排序,去除重复行
Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...
- uniq 去除重复行
1.命令功能 uniq可以输出或忽略文件中的重复行,经常需要使用sort先对文件进行排序,然后使用uniq去重并计数. 2.语法格式 uniq option input uniq 选项 ...
- linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计
转自:http://blog.sina.com.cn/s/blog_6797a6700101pdm7.html 去除重复行 sort file |uniq 查找非重复行 sort file |uniq ...
随机推荐
- SqlServer 数据库/数据表 拆分(分布式)【转】
通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器 ...
- wifi文件传输
步骤: 1.下载CocoaHTTPServer 2.解压后,将CocoaHTTPServer-master目录下的Core导入工程. 3.打开Samples/SimpleFileUploadServe ...
- linux之 crontab 定时任务
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查 ...
- python 数据库查询结果转对象
#coding:utf-8 from json import dumps, loads, JSONEncoder, JSONDecoder import pickle from app.model.J ...
- Linux Skills
++实现RedHat非正常关机的自动磁盘修复先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下:AUTOFSCK_DEF_CHECK=yesPROMPT=yes ...
- About CoffeeScript
本篇文章是对CoffeeScript做一个初步的了解.入门的学习笔记. 什么是CoffeeScript 一种新编程语言,是一套JavaScript的转译语言,可编译成高效的JavaScript.还可以 ...
- 分布式缓存系统 Memcached 工作线程初始化
Memcached采用典型的Master-Worker模式,其核心思想是:有Master和Worker两类进程(线程)协同工作,Master进程负责接收和分配任务,Worker进程负责处理子任务.当各 ...
- CCPC2018-湖南全国邀请赛 G String Transformation
G.String Transformation 题目描述 Bobo has a string S = s1 s2...sn consists of letter a , b and c . He ca ...
- 第六章 深入分析ClassLoader工作机制
补充(非书中): Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件).类加载器负责读取Java字节代码,并转换成 java.lan ...
- js中的Array
js中的Array 啥是ArrayLike对象 类似,下面这种对象的就是ArrayLike var arraylike = { 0: "a", 1: "b", ...