/// <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. Kosaraju算法---强联通分量

    1.基础知识 所需结构:原图.反向图(若在原图中存在vi到vj有向边,在反向图中就变为vj到vi的有向边).标记数组(标记是否遍历过).一个栈(或记录顶点离开时间的数组).      算法描叙: :对 ...

  2. 一个故事讲清楚NIO

    转载请引用:一个故事讲清楚NIO 假设某银行只有10个职员.该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟): 2) 职员审核(1分钟): 3) 职员叫保安去金库取钱(3分钟): 4) ...

  3. hibernate---注解--CascadeType属性

    cascade表示级联操作 CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时同时修改items里的对象.对应EntityManager的merge方法 Cas ...

  4. springmvc(1)DispatcherServlet源码简单解析

    springmvc的简单配置 1.首先需要在web.xml中配置DispatcherServlet,这个类是springmvc的核心类,所以的操作都是由这里开始,并且大部分都是在这里面实现的,比如各种 ...

  5. 2016年湖南省第十二届大学生计算机程序设计竞赛Problem A 2016 找规律归类

    Problem A: 2016 Time Limit: 5 Sec  Memory Limit: 128 MB Description  给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) ...

  6. Elasticsearch5.0 BreakChange摘要

    Lucene版本 6.2.1 常用API变化重点关注 Java api 1 client create方式变更: 2 count api removed; 3 suggest api removed; ...

  7. PHP 批量生成静态文件目录代码

    <?php /** * @author:jiangzaixing 20160314 * 获取静态文件方法 */ class StaticFile { const MAP_FILE_NAME = ...

  8. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  9. TestNG官方文档中文版(5)-测试方法/类和组

    5 - Test methods, Test classes and Test groups 5.1 - Test groups TestNG容许执行复杂的测试方法分组.不仅可以申明方法属于组,而且可 ...

  10. Python中类的定义

    class Student(object): # 有点类似其它高级语言的构造函数 def __init__(self,name,score): self.name = name self.score ...