C#中去掉表中重复的数据
/// <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#中去掉表中重复的数据的更多相关文章
- 使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)
方法一. var flag = true; $(function() { $("#interested").click(function() { beInterested(); } ...
- 在SQL SERVER中获取表中的第二条数据
在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...
- 查看hive中某个表中的数据、表结构及所在路径
查看hive中action_data_myisam表中的数据.表结构及所在路径 1.客户端进入hive环境:hive 2.查看表数据,鉴于数据量大,这里只显示前五条:select * from act ...
- koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...
- 在Express 中获取表单请求体数据
在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...
- 备忘:MySQL中修改表中某列的数据类型、删除外键约束
-- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...
- mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行
delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...
- mysql中在表中insert数据时,有重复主键id时,变成update
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法 例如: id name sex age 1 kathy male 23 2 Javer f ...
- SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...
随机推荐
- [转]JavaScript程序编码规范
原文:http://javascript.crockford.com/code.html 作者:Douglas Crockford 译文:http://www.yeeyan.com/articles/ ...
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW ...
- Scalaz(40)- Free :versioned up,再回顾
在上一篇讨论里我在设计示范例子时遇到了一些麻烦.由于Free Monad可能是一种主流的FP编程规范,所以在进入实质编程之前必须把所有东西都搞清楚.前面遇到的问题主要与scalaz Free的Free ...
- BZOJ 2467 解题报告
对于一个合格的程序员来说,掌握一定的数学知识是非常必要的,所以这次就开个数学专题玩玩. 不多说啥,上题目,我们直接分析题目! 首先ORZ stonepage神犇,一眼就看出我把快速幂写成快速乘了…… ...
- Java final自变量
Java 1.1 允许我们将自变量设成final 属性,方法是在自变量列表中对它们进行适当的声明.这意味着在一个方法的内部,我们不能改变自变量句柄指向的东西.如下所示: /** * Created b ...
- 【转】Linux重定向操作符
Linux重定向操作符 功能描述 > 将命令输出写入文件或设备,而不是命令提示符或句柄,清空原有文件然后写入 < 从文件而不是从键盘或句柄读入命令输入 >> 将命令输出添加到文 ...
- 【小贴士】zepto find元素以及ios弹出键盘可能让你很头疼
前言 在此,我不得不说移动端的兼容问题很多,并且很令人头疼,这不,这个星期又有两个让我逮着了,一个是使用zepto过程中出现的问题,一个是ios虚拟键盘的问题 我这里做一次记录,以免以后忘了,同时希望 ...
- 原生andriod浏览器回退后dom(click)事件全体失效问题探究
问题描述 今天同事遇到一个神一样的BUG: 在原生浏览器下,为dom元素绑定一个click事件,其中有个a标签外链,点击a后进入其他页面,点击浏览器后退后,页面点击事件全体失效! 我于是用ios测了下 ...
- 仿iphone日历插件(beta)
前言 小伙伴们好,很久不见了.最近工作进入正常期了,所以慢慢的悠闲的时间久没有了,所以不能每天水一篇了. 最近也在听师傅(http://home.cnblogs.com/u/aaronjs/)的教导开 ...
- angular源码分析:angular的整个加载流程
在前面,我们讲了angular的目录结构.JQLite以及依赖注入的实现,在这一期中我们将重点分析angular的整个框架的加载流程. 一.从源代码的编译顺序开始 下面是我们在目录结构哪一期理出的an ...