//去掉重复行
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
原文:https://blog.csdn.net/qq_23502409/article/details/75269221

C# DataTable去重,根据列名去重保留其他列的更多相关文章

  1. union的特性,去重与不去重

    转载:https://blog.csdn.net/kingmax54212008/article/details/33762921 union的特性,去重与不去重 集合操作有 并,交,差 3种运算. ...

  2. C#如何将DataTable中的列名复制到另一个DataTable

    C#如何将DataTable中的列名复制到另一个DataTable? 仅复制列名,不复制列下的数据: var newDt = new DataTable(); newDt = oldDataTable ...

  3. mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

    mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...

  4. JS实现数组去重(重复元素保留一个)

    1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...

  5. mysql数据库去重语句和不同表之间列的复制语句

    1.去重语句:DELETE FROM `v_klg_item` WHERE id NOT IN (SELECT * FROM (SELECT MAX(id) FROM `v_klg_item` GRO ...

  6. JS实现字符串去重,数组去重

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. JQuery标签去重与数组去重

    如图所示: 代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head ...

  8. MySQL 查询重复的数据,以及部分字段去重和完全去重

    1.查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vit ...

  9. javascript数组去重 js数组去重

    数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [ ...

随机推荐

  1. 2.9 log4j 在测试过程中打印执行日志

    Apache Log4j配置说明/log4j的分层打印    http://blog.csdn.net/zzy7075/article/details/53763728

  2. Linux基础命令小结(超全!!)

    Linux目录结构 1.bin 存放经常使用的指令比如ll,cp 2.sbin 系统管理员使用的系统管理指令 3.home 存放普通用户的住目录 4.root 系统管理员的用户主目录 5.boot 存 ...

  3. es 6.x scroll用法

    我们可以使用from +size来获取所有数据,但是,如果数据量大的时候,这样的操作开销很大,这时候可以使用scroll操作 1.第一步发起一个scroll 的post请求,带上参数scroll=1m ...

  4. Mongo查询list数组中一个字段大于特定条数

    由于刚刚接触mongodb,很多语法还不是很了解,写的不好的地方请大佬指出 查询的demo数据 { "_id":Object("xxxxxxxx"), &quo ...

  5. 每天进步一点点------Allegro PCB命名规则

    PCB命名规则-allegro 一.焊盘命名规则 1. 贴片矩形焊盘  命名规则:SMD+长(L)+宽(W)(mil) 举例:SMD90X60 2. 贴片圆焊盘   命名规则:SMDC+焊盘直径(D) ...

  6. Tomcat配置过程

    Tomcat的配置其实还是挺简单的,下面是在Myeclipse中配置 1.首先要在Tomcat官网下载,网址:http://tomcat.apache.org/,然后左侧会有Download,选择你要 ...

  7. 微信小程序 (全局配置和页面配置)

    全局配置 app.json 文件用来对微信小程序进行全局配置. 一.配置页面路径 二.window 配置全局默认的窗口 navigationBarTextStyle:导航栏的标题颜色 navigati ...

  8. 1012 The Best Rank

    1012 The Best Rank 1. 注意点 一名同学同样排名下的科目优先级问题 不同同学分数相同时排名相同,注意 排名不是 1 1 2 3 4 这种, 而是 1 1 3 4 5 注意到有些同学 ...

  9. gulp 常用方法 任务 插件

    执行gulp 任务 gulp taskname (default任务不输入名称亦可:gulp) var gulp = require("gulp"); gulp.task(&quo ...

  10. React的React.createRef()/forwardRef()源码解析(三)

    1.refs三种使用用法 1.字符串 1.1 dom节点上使用 获取真实的dom节点 //使用步骤: 1. <input ref="stringRef" /> 2. t ...