/// <summary>

/// 去掉表中重复的数据  int

/// </summary>

/// <param name="SourceTable">原始表</param>

/// <param name="FieldName">重复的字段</param>

/// <returns></returns>

public DataTable SelectDistinct(DataTable SourceTable, string FieldName)

{

DataTable dt = new DataTable();

for (Int32 i = 0; i < SourceTable.Columns.Count; i++)

{

string fieldName=SourceTable.Columns[i].Caption;

dt.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType);

}

DataRow dataRow = dt.NewRow();

foreach (DataRow dr in SourceTable.Select("", FieldName))

{

string str=dr[FieldName].ToString();

if(str != string.Empty)

{

if(int.Parse(str)!=0)

{

if (dataRow == null || !(ColumnEqual(dataRow[FieldName], dr[FieldName])))

{

dataRow=dr;

DataRow row = dt.NewRow();

for (int i = 0; i < dataRow.ItemArray.Length; i++)

{

row[i] = dataRow[i];

}

dt.Rows.Add(row);

}

}

}

}

return dt;

}

/// <summary>

/// 去掉表中重复的数据 字段 string

/// </summary>

/// <param name="SourceTable">原始表</param>

/// <param name="FieldName">重复的字段</param>

/// <returns></returns>

public DataTable SelectDistinctStr(DataTable SourceTable, string FieldName)

{

DataTable dt = new DataTable();

for (Int32 i = 0; i < SourceTable.Columns.Count; i++)

{

string fieldName=SourceTable.Columns[i].Caption;

dt.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType);

}

DataRow dataRow = dt.NewRow();

foreach (DataRow dr in SourceTable.Select("", FieldName))

{

string str=dr[FieldName].ToString();

if(str != string.Empty)

{

if (dataRow == null || !(ColumnEqual(dataRow[FieldName], dr[FieldName])))

{

dataRow=dr;

DataRow row = dt.NewRow();

for (int i = 0; i < dataRow.ItemArray.Length; i++)

{

row[i] = dataRow[i];

}

dt.Rows.Add(row);

}

}

}

return dt;

}

private bool ColumnEqual(object A, object B)

{

if(A == DBNull.Value && B == DBNull.Value) //     两个都是   DBNull.Value

return true;

if(A == DBNull.Value || B == DBNull.Value) //     只有一个是   DBNull.Value

return false;

return (A.Equals(B));//   正常比较

}

/// <summary>

/// 表中筛选数据

/// </summary>

/// <param name="SourceTable">原始表</param>

/// <param name="FieldName1">表里的字段名</param>

/// <param name="FieldName2">筛选的数据</param>

/// <returns></returns>

public DataTable SelectByField(DataTable SourceTable,string FieldName1, string FieldName2)

{

DataTable dt = new DataTable();

for (Int32 i = 0; i < SourceTable.Columns.Count; i++)

{

string fieldName=SourceTable.Columns[i].Caption;

dt.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType);

}

foreach (DataRow dr in SourceTable.Select(" "+FieldName1+" = '" + FieldName2 + "'"))

{

DataRow row = dt.NewRow();

for (int i = 0; i < dr.ItemArray.Length; i++)

{

row[i] = dr[i];

}

dt.Rows.Add(row);

}

return dt;

}

C#中去掉表中重复的数据的更多相关文章

  1. 使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)

    方法一. var flag = true; $(function() { $("#interested").click(function() { beInterested(); } ...

  2. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  3. 查看hive中某个表中的数据、表结构及所在路径

    查看hive中action_data_myisam表中的数据.表结构及所在路径 1.客户端进入hive环境:hive 2.查看表数据,鉴于数据量大,这里只显示前五条:select * from act ...

  4. koa 基础(十)原生node.js 在 koa 中获取表单提交的数据

    1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...

  5. 在Express 中获取表单请求体数据

    在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...

  6. 备忘:MySQL中修改表中某列的数据类型、删除外键约束

    -- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...

  7. mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行

    delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...

  8. mysql中在表中insert数据时,有重复主键id时,变成update

    MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法 例如:  id name sex age  1 kathy male 23  2 Javer f ...

  9. SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份

    SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...

随机推荐

  1. Redis系列二之事务及消息通知

    一.事务 Redis中的事务是一组命令的集合.一个事务中的命令要么都执行,要么都不执行. 1.事务简介 事务的原理是先将一个事务的命令发送给Redis,然后再让Redis依次执行这些命令.下面看一个示 ...

  2. 炉石传说 C# 开发笔记 (法术篇)

    炉石的设计,最核心的内容是法术效果. 法术卡牌,无疑是法术的集中体现,但是,法术效果除了在法术卡牌之外,也不除不在. 随从的战吼,亡语,奥秘的揭示等等都是法术效果的体现. 法术卡牌在炉石里面有很多种( ...

  3. 新一代编程:scala泛函编程技术-唠叨

    准备了半年后,终于决定在这里开始我的scala编程技术学习体验撰写之旅.初步打算在这里把我学习.体验.掌握scala编程的过程与有兴趣的朋友分享.我想,虽然我这不是正式论文或者教课书之类的,但写个开场 ...

  4. 一个java实习生两周八次的面试经历

    以前从来没有因为求职出去面试过,一直觉得面试很可怕,没想到最近两周我也成为了面霸,两周面试八次,我的找工作之路就这样开始了!大概两个星期之前,我看着自己在招聘网站上写好的简历连投出去的勇气都没有,战战 ...

  5. IO碰到的问题

    1.流关了,并不代表流对象为空 可是java并没提供查看流是否关闭的方法 不过如果流已经关闭了以后,再对流进行操作的话,会抛出IOException:Stream closed异常 可以根据这个异常来 ...

  6. UML类图关系总结

    在UML类图中,常见的有以下几种关系: 泛化(Generalization) 实现(Realization) 关联(Association) 聚合(Aggregation) 组合(Compositio ...

  7. DOM相关知识点以及原型

    DOM(增删改查): 查询 1.获取元素 1.1标准DOM API document.getElementById document.getElementsByTagName document.get ...

  8. 02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis

    我们先用jdbc去编写一个例子: 第一步:建表 /* SQLyog v10.2 MySQL - 5.1.72-community : Database - mybatis ************** ...

  9. 玩转Docker之Docker简介(一)

    近几年掀起的docker热潮,可谓席卷全球.什么原因使它这么备受推崇呢?主要是因为它解决了行业痛点.玩linux的都知道,安装个应用时还要先安装所需环境.相关库.解决依赖关系.而docker的出现,很 ...

  10. SQL Server 跨库同步数据

    最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理.这里的存储过程用的不是op ...