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 ...
随机推荐
- ScrollView与ListView冲突解决
正 常来说,在ScrollView添加一个ListView后在真机上只会显示ListView的一行多一点,我也不理解为什么会这样,后来我把 ListView的layout_height改成400dip ...
- sql中 in , not in , exists , not exists效率分析
in和exists执行时,in是先执行子查询中的查询,然后再执行主查询.而exists查询它是先执行主查询,即外层表的查询,然后再执行子查询. exists 和 in 在执行时效率单从执行时间来说差不 ...
- all requires API level 3 (current min is 1)问题的解决
几次出现了all requires API level 3 (current min is 1)的错误,后来发现解决的方法是右键单击项目文件夹,选择Android Tools->Clear Li ...
- 【Java每日一题】20161115
package Nov2016; import java.io.Serializable; public class Ques1115 implements Serializable{ private ...
- Firemonkey 调整 MainMenu 字型大小 (D10)
修改 Windows 下的 Style,找到下面二个 Style ,修改其中的 text 内的 font 大小: 将 FMX.Menus.pas 复制到自己的工程目录内,再修改如下内容: constr ...
- 点我吧工作总结(技术篇) Cobar原理和环境搭建
我思故我在,提问启迪思考! 1.什么是Cobar? Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务.cobar已经在阿里巴巴B2B公司稳定运行 ...
- 初学C++ 之 输入输出(IDE:vs2013)
#include <iostream> //引用头文件(输入输出) using namespace std; //引用命名空间,方便使用输入输出语句 class MathMethod { ...
- maven 检查依赖冲突和版本冲突
maven 检查依赖冲突和版本冲突 在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令: 1 2 3 mvn -U clean package - ...
- Loadrunner中web_find和web_reg_find函数的使用与区别
总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()和web_reg_find():这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下:一.web_find( ...
- GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]
Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手 粘贴时有一个版权问题 本文原 ...