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
时间: 2024-11-13 02:14:52

ADO.NET DataSet、DataTable、DataRow、DataView的学习的相关文章

DataSet - DataTable - DataRow 读取 xml 文件 + 搜索

DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigName.xml");//取得xml文件 DataTable dt = ds.Tables["table_Name"];//取得xml文件的节点内容 DataRow[] dr = dr = ds.Tables["table_Name"].Select("

dataTable 、dataView、Dataset 区别

dataTable .dataView.Dataset 区别的经典回答 1.DataView是DataTable的表示,DataTable表里的记录是没有顺序的,但显示可以有不同顺序(DataVIew), 但还是同一张表,所以一个DataTable可以有多个DataView,默认访问DataTable,其实是访问他的 DefaultView.DataSet则是DataTable的集合,也可以有不止一个DataTable 2.DataView   是一张DataTable的虚拟视图   ,主要用来

dataset datatable datacolums datarow

DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的一个表. 公共属性 Columns 获取属于该表的列的集合. DataSet 获取此表所属的 DataSet. DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图. PrimaryKey 获取或设置充当数据表主键的列的数组. Rows 获取属于该表的行的集合. TableName 获取或设

C#使用DataSet Datatable更新数据库的三种实现方法

本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参考之用.具体方法如下: 一.自动生成命令的条件 CommandBuilder 方法 a)动态指定 SelectCommand 属性 b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand

使用DataSet Datatable 更新数据库的三种方式

1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand.c)为了返回构造 INSERT.UPDATE 和 DELETE .SQL CommandBuilder 必须执行 SelectCommand.即:必须额外经历一次到数据源的行程,这可能会降低性能.这也是自动生成命令的缺点.d)

ADO.Net中DataTable的应用(知识点描述、思维导图、示例代码、效果截图)

在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 DataTable 中.下面是 Ado.Net 关系:Connection_____Command____DataAdapter____Dataset  _____Datareader ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源. 一.思维导图: 二.知识点描述: Data Table的构造函数:

C#----List&lt;&gt;,DataTable,DataView的使用

首先申明一下,写此博文的目的是纪录一下,知识都是现成的,只是整理一下,为了让自己更容易看懂,比在其他地方更容易明白.因为它们太常用了,不忍心每次都去用那么长的时间查看MSDN,希望能在这里用理少的时间来理解并运用其用法.最终目标是减少从接触到能理解并使用的时间. List<T>类型的查找操作Find 1 Point pt; 2 List<Point> lstPs = new List<Point>(); 3 for (int i = 0; i < 10; i++)

datatable 与dataview的区别

datatable 与dataview的区别 一.DataTable    DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息.DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在:也可以是完全由程序自己通过代码来建立的一个表.        二.DataView      DataView表示用于排序.筛选.搜索.编辑和导航的 DataTable 的可

DataSet DataTable操作

DataSet ds = new DataSet();            DataTable dt = new DataTable("OrderList");            dt.Columns.Add(new DataColumn("ID", typeof(string)));            dt.Columns.Add(new DataColumn("FLMC", typeof(string)));            

将Json数据转换为ADO.NET DataSet对象

Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要.这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET DataSet. 设计 事实上Newtonsoft.Json已经提供了一套完整的Json数据文档结构,Newtonsoft.Json.Linq命名空间下提供了这种文档结构的对象