/// <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. 注册asp.net 4.0 到iis

    如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下: 32位的Windows:------------------------------------------------- ...

  2. Failed to create the Java Virtual Machine.问题的解决

    运行Eclipse,出现了"Failed to create the Java Virtual Machine."错误: 解决的办法是在Eclipse的解压目录下找到eclipse ...

  3. Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement

    Connection.prepareStatement()函数出错,提示: Type mismatch: cannot convert from java.sql.PreparedStatement ...

  4. 获取PC或移动设备的所有IP地址

    不论是PC还是移动设备,都有可能同时存在几个IP地址(如具有多块网卡),本文介绍怎样获得PC或移动设备的所有IP地址. // 获得所有IP地址 public static void get_ip(){ ...

  5. 基于TCP和多线程实现无线鼠标键盘-GestureDetector

    为了实现无线鼠标,需要识别出用户在手机屏幕上的滑动动作,这就需要用到GestureDetector类. 首先是activity_main.xml: <LinearLayout xmlns:and ...

  6. 修正 XE6 TListView 上方 SearchBok 右边的清除钮显示

    注意:XE7 已修正这个问题. Delphi Firemonkey TListView 提供了搜寻的功能,但在 XE6 以前的版本,可以显示右边的清除按钮,在 XE6 确消失了,这里提供一个修正的方案 ...

  7. 2015暑假多校联合---Cake(深搜)

    题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...

  8. Yii2.0学习笔记:第一个页面Saying Hello

    Controller目录下创建TestController.php 复制下面代码,yii跟tp一样,全程命名空间 <?php namespace app\controllers; use yii ...

  9. [翻译] Autofac 中注册的概念

    原文链接:http://docs.autofac.org/en/latest/register/registration.html 所谓注册组件,是指创建 ContainerBuilder 的实例,并 ...

  10. 玩转Docker之常用命令篇(三)

    首先我们来解决一个小问题,使用docker每次都要用sudo,为了让非root用户使用docker,可将当前用户添加到docker用户组: sudo groupadd docker sudo gpas ...