ADO.NET DataSet、DataTable、DataRow、DataView的学习
对于一个datatable中的数据进行嵌套查询判断某几列数据是否相同从而确定这条数据是否一样,并确定他重复的次数COUNT1字段。
例如: DataTable dt = new DataTable();
dt.Columns.Add("NAME", System.Type.GetType("System.String"));
dt.Columns.Add("SEX", System.Type.GetType("System.String"));
dt.Columns.Add("BIRTHDAY", System.Type.GetType("System.String"));
dt.Columns.Add("BIRPLACE", System.Type.GetType("System.String"));
dt.Columns.Add("COUNT1", System.Type.GetType("System.Int32"));
假设一个dsBA数据集中包含很多信息,不乏有几行重复的数据
循环dsBA给dt加入数据
for (int i = 0; i < dsBA.Tables[0].Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["NAME"] = dsBA.Tables[0].Rows[i]["NAME"];
dr["SEX"] = dsBA.Tables[0].Rows[i]["SEX"];
dr["BIRTHDAY"] = dsBA.Tables[0].Rows[i]["BIRTHDAY"];
dr["BIRPLACE"] = dsBA.Tables[0].Rows[i]["BIRPLACE"];
dr["COUNT1"] = 1;//初始化不管
dt.Rows.Add(dr);
}
那么对dt的排序操作如下:(必须先对dt排序)
#region 操作dt
//首先对dt要按名称排序这样有利于内层循环做判断
dt.DefaultView.Sort = "NAME asc";
DataTable dt2 = dt.DefaultView.ToTable(); DataTable dtCopy = dt2.Clone();
//判断dt中数据人员四项是否有相同的的,如果有相同的则代表同一个人,
//如果次数大于1则保存该人员信息和总计次数,并输出结果
int count = 1;//定义count保存重复的次数,确定人员出访次数
bool flag = false;//是否结束内存循环和内层循环是否结束
for (int i = 0; i < dt2.Rows.Count; i++)
{
count = 1;
string name1 = dt2.Rows[i]["NAME"].ToString();
string sex1 = dt2.Rows[i]["SEX"].ToString();
string birthday1 = dt2.Rows[i]["BIRTHDAY"].ToString();
string birplace1 = dt2.Rows[i]["BIRPLACE"].ToString();
for (int j = i+1; j < dt2.Rows.Count; j++)
{
string name2 = dt2.Rows[j]["NAME"].ToString();
string sex2 = dt2.Rows[j]["SEX"].ToString();
string birthday2 = dt2.Rows[j]["BIRTHDAY"].ToString();
string birplace2 = dt2.Rows[j]["BIRPLACE"].ToString();
if (name1 == name2 && sex1 == sex2 && birplace1 == birplace2 && birthday1 == birthday2)
{
count++;//次数加1
flag = true;//继续循环
continue; //
}
else
{
flag = false;//表示没有相同的
break;//推出本层循环继续外围循环
}
}
if (count > 1&&flag==false)
{
DataRow dr = dtCopy.NewRow();
dr["NAME"] = dt2.Rows[i]["NAME"];
dr["SEX"] = dt2.Rows[i]["SEX"];
dr["BIRTHDAY"] = dt2.Rows[i]["BIRTHDAY"];
dr["BIRPLACE"] = dt2.Rows[i]["BIRPLACE"];
dr["COUNT1"] = count;
dtCopy.Rows.Add(dr);
}
i = i + count;//从不重复的位置开始继续进行外层循环
}
#endregion
ADO.NET DataSet、DataTable、DataRow、DataView的学习的更多相关文章
- DataSet & DataTable &DataRow 深入浅出
本篇文章适合有一定的基础的人去查看 ,最好学习过一定net 编程基础在来查看此文章. 1.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖 ...
- DataSet - DataTable - DataRow 读取 xml 文件 + 搜索
DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigN ...
- DataTable,DataSet,DataRow与DataView
DataTable和DataSet可以看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?原因是,这 ...
- DataSet,DataTable,DataColumn,DataRow的常用操作
DataSet 这个玩意没什么好讲的,当ado.net查询出有多张表集合的数据返回时,这个时候就会使用到DataSet. DataTable //表之间直接赋值 dt2=dt1; 两者指向同一内存空间 ...
- dataTable 、dataView、Dataset 区别
dataTable .dataView.Dataset 区别的经典回答 1.DataView是DataTable的表示,DataTable表里的记录是没有顺序的,但显示可以有不同顺序(DataVIew ...
- 第八周学习笔记-ADO.Net中DataTable的应用
ADO.Net中DataTable的应用 一.知识点描述 1.概述:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表),是ADO.Net库中的核心对象. 2.DataTabl ...
- dataset datatable datacolums datarow
DataSet 表示数据在内存中的缓存. 属性 Tables 获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的 ...
- C#使用DataSet Datatable更新数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...
- 使用DataSet Datatable 更新数据库的三种方式
1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteC ...
- DataSet,DataTable排序(转载)
DataSet,DataTable排序 关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...
随机推荐
- structs 拦截器
首先,要跟大家道个歉,前一阵子为给客户个一个DEMO,忙得不可开交,所以很久没有更新Blog.提到这个DEMO我想顺便跟大家分享一下心得——如果大家希望快速开发,一个类似Struts 2这样的简单方便 ...
- 手机端Zepto框架,利用swipejs插件做banner轮播图
一,HTML部分<div class="banner"> <div id="slider" class="swipe"&g ...
- 把Storyboard减轻的方法
把Storyboard减轻的方法 by 伍雪颖 UIViewController *secondStoryboard = [[UIStoryboard storyboardWithName:@&quo ...
- Android设置背景
一.设置图片背景 首先你先将一个的背景图片存入工程中res/drawble(当然drawble-hdpi.drawble-mdpi.drawble-ldpi中一个或者几个文件夹都可)文件夹中.假如我存 ...
- SQLServer2000数据同步复制技术方法
一. 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算机管理 --用户和组 --右键用户 --新建用户 ...
- 简单的FTP上传下载(java实现 swing界面)
/** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将 ...
- myeclipse内存不足有关问题
myeclipse内存不足有关问题 myeclipse内存不足问题 使用myeclipse8.5出现如下问题:MyEclipse has detected that less than 5% of t ...
- C#控制台程序本地化应用(Localization)
本地化在百度百科上的解释如下: “软件本地化是指将某一产品的用户界面(UI)和辅助材料(文档资料和在线帮助菜单)从其原产国语言向另一种语言转化,使之适应某一外国语言和文化的过程.” 其原理主要是把相同 ...
- 踩坑学php(1)
前言: 为什么要学php 呢?作为一个前端,一直有着了解后台的好奇心:作为一个计算机毕业的,一直有着实践更多设计模式和数据库相关的东西:而php 非常流行,拥有非常多的资源,入门应该容易: 为什么叫& ...
- python 调用shell或windows命令
目前使用到的有两种方式:os.system()和os.popen() import os os.system('cd e:cjx') #调用后返回执行结果状态 如果想获得返回结果,则使用以下方式: i ...