C# DataTable去重,根据列名去重保留其他列
- //去掉重复行
- DataView dv = table.DefaultView;
- table = dv.ToTable(true, new string[] { "name", "code" });
- 此时table 就只有name、code无重复的两行了,如果还需要id值则
- table = dv.ToTable(true, new string[] { "id","name", "code" });//第一个参数true 启用去重复,类似distinct
如果有一组数据(id不是唯一字段)
通过上面的方法得到
去重复去掉的仅仅是 id name code完全重复的行,如果想要筛选的数据仅仅是name不允许重复呢?
- table = dv.ToTable(true, new string[] { "name"});
得到:
但是我想要的结果是只针对其中的一列name列 去重复,还要显示其他的列
需要的结果是:
该怎么实现?下面的方法就可以,也许有更好的方法,
- #region 删除DataTable重复列,类似distinct
- /// <summary>
- /// 删除DataTable重复列,类似distinct
- /// </summary>
- /// <param name="dt">DataTable</param>
- /// <param name="Field">字段名</param>
- /// <returns></returns>
- public static DataTable DeleteSameRow(DataTable dt, string Field)
- {
- ArrayList indexList = new ArrayList();
- // 找出待删除的行索引
- for (int i = ; i < dt.Rows.Count - ; i++)
- {
- if (!IsContain(indexList, i))
- {
- for (int j = i + ; j < dt.Rows.Count; j++)
- {
- if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString())
- {
- indexList.Add(j);
- }
- }
- }
- }
- indexList.Sort();
- // 排序
- for (int i = indexList.Count - ; i >= ; i--)// 根据待删除索引列表删除行
- {
- int index = Convert.ToInt32(indexList[i]);
- dt.Rows.RemoveAt(index);
- }
- return dt;
- }
- /// <summary>
- /// 判断数组中是否存在
- /// </summary>
- /// <param name="indexList">数组</param>
- /// <param name="index">索引</param>
- /// <returns></returns>
- public static bool IsContain(ArrayList indexList, int index)
- {
- for (int i = ; i < indexList.Count; i++)
- {
- int tempIndex = Convert.ToInt32(indexList[i]);
- if (tempIndex == index)
- {
- return true;
- }
- }
- return false;
- }
- #endregion
C# DataTable去重,根据列名去重保留其他列的更多相关文章
- union的特性,去重与不去重
转载:https://blog.csdn.net/kingmax54212008/article/details/33762921 union的特性,去重与不去重 集合操作有 并,交,差 3种运算. ...
- C#如何将DataTable中的列名复制到另一个DataTable
C#如何将DataTable中的列名复制到另一个DataTable? 仅复制列名,不复制列下的数据: var newDt = new DataTable(); newDt = oldDataTable ...
- mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型
mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...
- JS实现数组去重(重复元素保留一个)
1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...
- mysql数据库去重语句和不同表之间列的复制语句
1.去重语句:DELETE FROM `v_klg_item` WHERE id NOT IN (SELECT * FROM (SELECT MAX(id) FROM `v_klg_item` GRO ...
- JS实现字符串去重,数组去重
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JQuery标签去重与数组去重
如图所示: 代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head ...
- MySQL 查询重复的数据,以及部分字段去重和完全去重
1.查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vit ...
- javascript数组去重 js数组去重
数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [ ...
随机推荐
- Flink流处理(二)- 流处理基本概念
1. Dataflow Programming 在讨论流处理的基本概念之前,我们首先介绍一下数据流编程(dataflow programming)的基本概念与术语. 数据流图 数据流程序一般在由数据流 ...
- selenium定位方法-iframe元素定位方法
在自动化测试中,如果无法定位到一个元素,那么最大的可能是定位的元素是在iframe框架中,iframe对象代表一个HTML的内联框架,在HTML中,iframe每出现一次,一个iframe对象就会被创 ...
- dbGet
dbGet是Innovus/Encounter DBTCL命令的一种.除了dbGet,DBTCL的命令还包括以下几种: 1. dbSet 2. setDbGetMode/getDbGetMode 3. ...
- Visual Studio 配置 fftw 库
前提条件: 1.vs 2010 +(我的是2019): 2.下载 fftw. 先将vs 的 msvc 编译器的位置添加到path,一般在下面这个目录下: Microsoft Visual Studio ...
- vue环境搭建及单页面标签切换实例
复习 """ 1.指令: v-once: <p v-once>{{ msg }}</p> v-cloak: 防止页面加载抖动 v-show:绑定的 ...
- Win2012或Win2016安装网卡
在电脑安装了Windows Server 2012或者2016等系统之后,可能面临的很大的问题就是没有有线或无线网卡. 1.安装网卡的功能 2.一直到“功能”这部分,选择安装“DirectPlay”和 ...
- 题解【洛谷P5019】[NOIP2018]铺设道路
题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度 ...
- json字符串和表相互转化中遇到的一个严重问题
导致脚本崩溃的一个问题 Import "zm.luae" zm.Init Dim aaa="fdsf23423dsfsdf" dim 结果表=Encode.Js ...
- mybatis--MyBatis动态SQL语句
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...
- Spring 属性依赖注入
1.1 属性依赖注入 依赖注入方式:手动装配 和 自动装配 手动装配:一般进行配置信息都采用手动 基于xml装配:构造方法.setter方法 基于注解装配: 自动装配:struts和spring ...