/// <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. When to close cursors using MySQLdb

    http://stackoverflow.com/questions/5669878/when-to-close-cursors-using-mysqldb I'm building a WSGI w ...

  2. MUI(1)

    今天小编用HBuilder+MUI开发移动APP,不用Android原生也不用IOS原生,仅仅用HTML5+MUI.小编也是初学者所以如有不准确的地方望大家指出帮助小编改正,同时也可以促进大家的深入学 ...

  3. AspectJ对AOP的实现

    一:你应该明白的知识 1.对于AOP这种编程思想,很多框架都进行了实现.Spring就是其中之一,可以完成面向切面编程.然而,AspectJ也实现了AOP的功能,且实现方式更为简捷,使用更加方便,而且 ...

  4. ahjesus配置vsftpd虚拟用户在Ubuntu

    网上搜索了很多资料,过时,不全,货不对版 已下步骤亲测有效,不包含匿名用户登录 1.新建/home/loguser.txt 并填充内容,格式如下 用户名密码用户名密码用户名密码 2.生成db文件用于用 ...

  5. CentOS添加路由表

    CentOS下静态路由修改命令方法一:添加路由route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev 1 ...

  6. Java经典实例:使用ChoiceFormat来格式化复数

    import java.text.ChoiceFormat; /** * Created by Frank */ public class FormatPuralsChoice extends For ...

  7. hadoop fs 命令

    1,hadoop fs –fs [local | <file system URI>]:声明hadoop使用的文件系统,如果不声明的话,使用当前配置文件配置的,按如下顺序查找:hadoop ...

  8. 【HTML5】<datalist>标签和<select>标签的比较

    <select>标签: 注:该标签定义了下拉列表的实现 <select name = "location"> <option value = &quo ...

  9. 【再探backbone 01】模型-Model

    前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...

  10. JQuery+HTML5+CSS3制作时间轴插件,支持响应式布局

    一.效果图预览 (图一) (图二) 附注说明: 图一是浏览器宽度像素大于560px下的展示效果,图二是在浏览器宽度像素小于560px下的展现效果.使用的是CSS3的Media Query(媒体查询)实 ...