亚洲必赢手机DataSet & DataTable &DataRow 深入浅出。DataSet & DataTable &DataRow 深入浅出。

by admin on 2018年10月5日

 

 

 

 

本篇文章可来肯定的基本功的口去查 ,最好读书了得net
编程基础在来查此篇。

本篇文章可生自然之功底之人头去查 ,最好习过早晚net
编程基础在来查阅此篇。

1.概念

  DataSet是ADO.NET的骨干概念。可以管DataSet当成内存中的数据库,DataSet是无借助于让数据库的单独数据集合。所谓独立,就是说,即使断开数量链路,或者关闭数据库,DataSet依然是可用之,DataSet在里头是因此XML来叙述数据的,由于XML是同栽及平台无关、与语言无关之数描述语言,而且好描述复杂关系的数目,比如父子关系的数码,所以DataSet实际上可以容纳有复杂关系的数额,而且不再依靠让数据库链路。我们好管DataSet当成内存数据库,DataSet里面可以储存多个说明(DataTable);我们称DataSet为数据集对象。

  DataTable大凡一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO
dot net 库中之核心目标。它可以吃用在 VB 和 ASP
上。它并非代码就好概括的绑定数据库。它装有微软风格的用户界面。

任何以DataTable的对象包括DataSet和DataView,DataTable中存放的是一行行的多少,这同样行行的多寡就是是DataRow
的数组(Array);我们称DataTable 为数据表对象。 

       DataRow凡DataTable中之数实施,他中发生含多独数据列,每个列好储存不同类型的价。

 

1.概念

  DataSet是ADO.NET的中心概念。可以管DataSet当成内存中的数据库,DataSet是不借助于让数据库的独门数据集合。所谓独立,就是说,即使断开数量链路,或者关闭数据库,DataSet依然是可用之,DataSet在里是因此XML来讲述数据的,由于XML是均等栽及平台无关、与语言无关的数描述语言,而且得描述复杂关系的数目,比如父子关系的数码,所以DataSet实际上可以包容所有复杂关系的数额,而且不再靠让数据库链路。我们得将DataSet当成内存数据库,DataSet里面可以储存多独说明(DataTable);我们称DataSet为数据集对象。

  DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个说明。)。DataTable是ADO
dot net 库中之基本目标。它好让用在 VB 和 ASP
上。它并非代码就得简简单单的绑定数据库。它有微软风格的用户界面。

其余以DataTable的对象包括DataSet和DataView,DataTable中存放的凡一行行的数额,这无异于行行的多少就是DataRow
的数组(Array);我们称DataTable 为数据表对象。 

       DataRow凡DataTable中的数量实行,他里面发生隐含多只数据列,每个列好储存不同种类的值。

 

2.DataSet 的广阔使用 

在C# 中 DataSet 存在让 System.Data
取名空间下,类似于java被保证的路子。DataSet 有一定量栽事列方式,代码如下

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds1 = new DataSet();//无构造实例,不指定DataSetName
            Console.WriteLine(ds1.DataSetName);
            DataSet ds2 = new DataSet("MySet");//一个构造实例,指定DataSetName
            Console.WriteLine(ds2.DataSetName);
            Console.ReadKey();
        }
    }
}

亚洲必赢手机 1

DataSet 常用之习性就一个,Tables ,这里虽可大多说了,如下列出DataSet
.Tables 如下常用性:

//
ds.Tables.Count;//获取数据集中存在的表底个数
//
ds.Tables.Add(new DataTable());//添加一个阐明(DataTable)到数据集

//DataTable[] array = { new DataTable(), new DataTable(), new
DataTable() };

//ds.Tables.AddRange(array);//添加一个说明(DataTable)的数组(Array)到数据集

//ds.Tables.Remove();//删除一个表

//ds.Tables.RemoveAt();//按照表的目从数据集删除一个表

//ds.WriteXml()//将xml 文件写副到DataSet 数据汇总

//ds.ReadXml()//将一个xml 文件读取到数集中

//ds.Tables.CanRemove()//验证是否好去一个汇中之靶子。

2.DataSet 的大规模使用 

在C# 中 DataSet 存在让 System.Data
命名空间下,类似于java被保证之路。DataSet 有点儿种事列方式,代码如下

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds1 = new DataSet();//无构造实例,不指定DataSetName
            Console.WriteLine(ds1.DataSetName);
            DataSet ds2 = new DataSet("MySet");//一个构造实例,指定DataSetName
            Console.WriteLine(ds2.DataSetName);
            Console.ReadKey();
        }
    }
}

亚洲必赢手机 2

DataSet 常用的性质就一个,Tables ,这里就不过基本上讲了,如下列出DataSet
.Tables 如下常用性:

//
ds.Tables.Count;//获取数据集中存在的阐发的个数
//
ds.Tables.Add(new DataTable());//添加一个阐明(DataTable)到数据集

//DataTable[] array = { new DataTable(), new DataTable(), new
DataTable() };

//ds.Tables.AddRange(array);//添加一个发明(DataTable)的数组(Array)到数据集

//ds.Tables.Remove();//删除一个表

//ds.Tables.RemoveAt();//按照表的目从数据集删除一个表

//ds.WriteXml()//将xml 文件写副到DataSet 数据汇总

//ds.ReadXml()//将一个xml 文件读取到数汇总

//ds.Tables.CanRemove()//验证是否好去除一个聚集中之靶子。

 3.DataTable 的广使用

 DataTable 和DataSet
命名空间一样,实例化的章程产生三种植,但是常用之就是简单种,第三种指定了表空间;这里而基本上讲,现在我们来拘禁下零星种植常用实例方式;

实例化1                               DataTable dt0 = new
DataTable();//没有点名表名,默认表名为 NewDataTable
实例化2                               DataTable dt1 = new
DataTable(“User”);//指定表名

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            ds.Tables.Add(dt);//把一个表加入到数据集中
            Console.WriteLine(ds.Tables.Count);
            Console.WriteLine(ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

  通过上面的代码,我们可见到,我们运用DataSet
的Add方法将一个DataTable 加入数据集。

当前文概述中,我们即便说了DataTable
是一个数据表,数据表就要出表头,那么要创建一个表头呢,上代码

 DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            ds.Tables.Add(dt);//把一个表加入到数据集中
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();

 这样同样摆空的表格,我们就产生矣,下边就是咱们安添加一个数量实施了,别急,我们先来拘禁下DataRow的用。关于创建一个数目实施我们会于高档部分解释。

 3.DataTable 的科普使用

 DataTable 和DataSet
命名空间一样,实例化的方发出三种,但是常用之尽管少于栽,第三栽指定了表空间;这里可是大多说,现在咱们来拘禁下零星种常用实例方式;

实例化1                               DataTable dt0 = new
DataTable();//没有点名表名,默认表名为 NewDataTable
实例化2                               DataTable dt1 = new
DataTable(“User”);//指定表名

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            ds.Tables.Add(dt);//把一个表加入到数据集中
            Console.WriteLine(ds.Tables.Count);
            Console.WriteLine(ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

  通过地方的代码,我们可看出,我们采取DataSet
的Add方法以一个DataTable 加入数据集。

当前文概述中,我们便说了DataTable
是一个数据表,数据表就要出表头,那么一旦创建一个表头呢,上代码

 DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            ds.Tables.Add(dt);//把一个表加入到数据集中
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();

 这样平等张空的表格,我们不怕来了,下边就是我们哪添加一个数目实施了,别急,我们先行来拘禁下DataRow的动。关于创建一个数额实施我们见面在高级部分解释。

 4.DataRow 的大面积使用

DataRow 的创始方式,只来同等种,因为咱们net
中设定了DataRow不同意实例化,只能通过
DataTable.NewRow()来创造,如 DataRow dr =
dt.NewRow();这样咱们即便获了一个空行对象。

4.1 如何为DataTable 增加行数据为??看如下代码

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            DataRow dr = dt.NewRow();
            dr["ID"] = 1;
            dr["Name"] = "xiaomeng";
            dr["age"] = 21;
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);//把一个表加入到数据集中
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow item= dt.Rows[i];
                Console.WriteLine(item["name"]+"今年"+item["age"]+"岁了");
            }
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

我们多程序员在付出之时节,都见面以为就即管一个多少行添加到DataTable
里面了,其实不是这般的?具体看高级部分

 

 4.DataRow 的广阔使用

DataRow 的创方式,只出一样栽,因为我们net
中设定了DataRow不容许实例化,只能通过
DataTable.NewRow()来创造,如 DataRow dr =
dt.NewRow();这样咱们虽拿走了一个空行对象。

4.1 如何吃DataTable 增加行数据为??看如下代码

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            DataRow dr = dt.NewRow();
            dr["ID"] = 1;
            dr["Name"] = "xiaomeng";
            dr["age"] = 21;
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);//把一个表加入到数据集中
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow item= dt.Rows[i];
                Console.WriteLine(item["name"]+"今年"+item["age"]+"岁了");
            }
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

我们很多程序员在付出的时,都见面觉得这虽将一个数量行添加到DataTable
里面了,其实不是这般的?具体看高级部分

 

5.归纳使用之CRUD(增删改查)

5.1新增 

咱俩在DataRow中凡是起一个性质叫RowState
叫做行状态,行态主要有如下值:“UnChange”(无变化),“Added”(新增过后的数据),“Modified”(修改之后的数量),“Deleted”
删除中之数,如下图,下图为点添加行数据的代码,断点调试。

亚洲必赢手机 3

透过上诉分析,我们见面发现,添加的多寡,并没交至外存上,只是程序临时存储的。那么我们怎么交也,看如下代码。

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            DataRow dr = dt.NewRow();
            dr["ID"] = 1;
            dr["Name"] = "xiaomeng";
            dr["age"] = 21;
            dt.Rows.Add(dr);
            dt.AcceptChanges();//提交数据
            ds.Tables.Add(dt);//把一个表加入到数据集中
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow item= dt.Rows[i];
                Console.WriteLine(item["name"]+"今年"+item["age"]+"岁了");
            }
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

  亚洲必赢手机 4

 

 提交代码DataTable.AcceptChanges();那么闹内存的提交是匪是吗当有内存的回滚,这里可是大多介绍了,我们来拘禁下

DataTable 新增施行数据的时光状态 为 Added
,这个时可使DataTable的 .AcceptChanges()方法进行提交,可以采取RejectChanges()函数进行回滚。

DataTable 修改行数据的时段状态 为
Modified ,这个时刻可以利用DataTable的 .AcceptChanges()方法开展付出,可以采用RejectChanges()函数进行回滚。

DataTable 删除执行数据的早晚状态 为
Deleted,这个时候可以动用DataTable的 .AcceptChanges()方法开展付出,可以用RejectChanges()函数进行回滚。

脚来拘禁下增加删改的代码

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            DataColumn[] arrayColumn = {
                new DataColumn("id", typeof(int)),
                new DataColumn("name", typeof(string)),
                new DataColumn("age", typeof(int)),
                new DataColumn("sex", typeof(string))
            };  
            dt.Columns.AddRange(arrayColumn);
            Console.WriteLine("---------------------------新增---------------------------");
            DataRow dr0 = null;
            for (int i = 0; i < 5; i++)
            {
                dr0 = dt.NewRow();
                dr0[0] = i;
                dr0[1] = "xiaoming"+i;
                dr0[2] = 20+i+new Random().Next(1,10);
                dr0[3] = new Random().Next(i, 200)%3==0?"男":"女";

                dt.Rows.Add(dr0);
            }
            Console.WriteLine("新增没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr0.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("新增提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr0.RowState);
            Console.WriteLine("---------------------------修改---------------------------");
            DataRow dr1 = dt.Rows[0];
            dr1["name"] = "wbcsky";
            Console.WriteLine("修改没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr1.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("修改提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr1.RowState);
            Console.WriteLine("---------------------------删除---------------------------");
            DataRow dr2=dt.Rows[0]  ;//删除第一条
            dr2.Delete();//这里没有使用dt.rmove 和dt.rmoveat,因为这两个方法直接提交了
            Console.WriteLine("删除没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr2.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("删除提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr2.RowState);
            Console.Read();
        }

        private static void Print(DataTable dt)
        {
            foreach (DataRow item in dt.Rows)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                     msg =e.Message;

                }

                Console.WriteLine(msg);
            }
        }
    }
}

尽结果使下图

亚洲必赢手机 5

5.综合采取之CRUD(增删改查)

5.1新增 

俺们以DataRow中凡是来一个性叫RowState
叫做行状态,行态主要有如下值:“UnChange”(无别),“Added”(新增过后的多寡),“Modified”(修改之后的数据),“Deleted”
删除中的数量,如下图,下图也面添加行数据的代码,断点调试。

亚洲必赢手机 6

经上诉分析,我们见面发觉,添加的多少,并不曾付诸到内存上,只是程序临时存储的。那么我们怎么交也,看如下代码。

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Set");
            DataTable dt = new DataTable("User");
            dt.Columns.Add(new DataColumn("ID", typeof(int)));//设定表头ID
            dt.Columns.Add("Name", typeof(string));//设定表头Name
            dt.Columns.Add("Age", Type.GetType("System.Int32"));//设定表头Name
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Console.WriteLine("遍历表头方式1_____"+dt.Columns[i]);

            }
            foreach (var item in dt.Columns)
            {
                Console.WriteLine("遍历表头方式2~~~" + item);
            }
            DataRow dr = dt.NewRow();
            dr["ID"] = 1;
            dr["Name"] = "xiaomeng";
            dr["age"] = 21;
            dt.Rows.Add(dr);
            dt.AcceptChanges();//提交数据
            ds.Tables.Add(dt);//把一个表加入到数据集中
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow item= dt.Rows[i];
                Console.WriteLine(item["name"]+"今年"+item["age"]+"岁了");
            }
            Console.WriteLine("当前数据集中有“"+ ds.Tables.Count + "”个表   ");
            Console.WriteLine("当前数据集的表名   " + ds.Tables[0].TableName);
            Console.Read();
        }
    }
}

  亚洲必赢手机 7

 

 提交代码DataTable.AcceptChanges();那么闹内存的付是休是也该有内存的回滚,这里可是大多介绍了,我们来拘禁下

DataTable 新增执行数据的早晚状态 为 Added
,这个时候可以使用DataTable的 .AcceptChanges()方法开展付出,可以应用RejectChanges()函数进行回滚。

DataTable 修改履数据的下状态 为
Modified ,这个上可行使DataTable的 .AcceptChanges()方法开展提交,可以动用RejectChanges()函数进行回滚。

DataTable 删除履行数据的时刻状态 为
Deleted,这个时可使DataTable的 .AcceptChanges()方法进行提交,可以下RejectChanges()函数进行回滚。

脚来拘禁下增加删改的代码

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            DataColumn[] arrayColumn = {
                new DataColumn("id", typeof(int)),
                new DataColumn("name", typeof(string)),
                new DataColumn("age", typeof(int)),
                new DataColumn("sex", typeof(string))
            };  
            dt.Columns.AddRange(arrayColumn);
            Console.WriteLine("---------------------------新增---------------------------");
            DataRow dr0 = null;
            for (int i = 0; i < 5; i++)
            {
                dr0 = dt.NewRow();
                dr0[0] = i;
                dr0[1] = "xiaoming"+i;
                dr0[2] = 20+i+new Random().Next(1,10);
                dr0[3] = new Random().Next(i, 200)%3==0?"男":"女";

                dt.Rows.Add(dr0);
            }
            Console.WriteLine("新增没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr0.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("新增提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr0.RowState);
            Console.WriteLine("---------------------------修改---------------------------");
            DataRow dr1 = dt.Rows[0];
            dr1["name"] = "wbcsky";
            Console.WriteLine("修改没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr1.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("修改提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr1.RowState);
            Console.WriteLine("---------------------------删除---------------------------");
            DataRow dr2=dt.Rows[0]  ;//删除第一条
            dr2.Delete();//这里没有使用dt.rmove 和dt.rmoveat,因为这两个方法直接提交了
            Console.WriteLine("删除没有提交打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr2.RowState);
            dt.AcceptChanges();//新增提交
            Console.WriteLine("删除提交后打印");
            Print(dt);
            Console.WriteLine("状态==================" + dr2.RowState);
            Console.Read();
        }

        private static void Print(DataTable dt)
        {
            foreach (DataRow item in dt.Rows)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                     msg =e.Message;

                }

                Console.WriteLine(msg);
            }
        }
    }
}

履结果如下图

亚洲必赢手机 8

6.概括运用的筛选排序

我们而想吃方的表排序,要怎么排序也?????,其实排序我们使用DataTable.Select
方法就是好,我们看下怎么利用

亚洲必赢手机 9

我们会见到select
方法有四独重载,我们只用一个参数的以及连个参数的,其中一个参数的是赛选,两只参数的率先独参数为筛,第二独也排序

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            DataColumn[] arrayColumn = {
                new DataColumn("id", typeof(int)),
                new DataColumn("name", typeof(string)),
                new DataColumn("age", typeof(int)),
                new DataColumn("sex", typeof(string))
            };  
            dt.Columns.AddRange(arrayColumn);

            DataRow dr0 = null;
            for (int i = 0; i < 5; i++)
            {
                dr0 = dt.NewRow();
                dr0[0] = i;
                dr0[1] = "xiaoming"+i;
                dr0[2] = 20+i+new Random().Next(1,5);
                dr0[3] = new Random().Next(i, 200)%3==0?"男":"女";

                dt.Rows.Add(dr0);
            }
            Console.WriteLine("---------------------------筛选之前---------------------------");
            Print(dt);
            DataRow[] rowArr=   dt.Select("age >25", " age desc");
            Console.WriteLine("---------------------------筛选之后按年龄排序---------------------------");
            PrintRow(rowArr);
            Console.Read();
        }
        private static void PrintRow(DataRow[] rowArr)
        {
            foreach (DataRow item in rowArr)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                    msg = e.Message;

                }

                Console.WriteLine(msg);
            }
        }
        private static void Print(DataTable dt)
        {
            foreach (DataRow item in dt.Rows)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                     msg =e.Message;

                }

                Console.WriteLine(msg);
            }
        }
    }
}

 

6.综合采取之筛选排序

俺们只要想被地方的表排序,要怎么排序为?????,其实排序我们运用DataTable.Select
方法就是足以,我们看下怎么利用

亚洲必赢手机 10

俺们见面盼select
方法来四个重载,我们只用一个参数的和连个参数的,其中一个参数的凡赛选,两独参数的首先个参数为罗,第二单吗排序

using System;
using System.Data;

namespace testData
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            DataColumn[] arrayColumn = {
                new DataColumn("id", typeof(int)),
                new DataColumn("name", typeof(string)),
                new DataColumn("age", typeof(int)),
                new DataColumn("sex", typeof(string))
            };  
            dt.Columns.AddRange(arrayColumn);

            DataRow dr0 = null;
            for (int i = 0; i < 5; i++)
            {
                dr0 = dt.NewRow();
                dr0[0] = i;
                dr0[1] = "xiaoming"+i;
                dr0[2] = 20+i+new Random().Next(1,5);
                dr0[3] = new Random().Next(i, 200)%3==0?"男":"女";

                dt.Rows.Add(dr0);
            }
            Console.WriteLine("---------------------------筛选之前---------------------------");
            Print(dt);
            DataRow[] rowArr=   dt.Select("age >25", " age desc");
            Console.WriteLine("---------------------------筛选之后按年龄排序---------------------------");
            PrintRow(rowArr);
            Console.Read();
        }
        private static void PrintRow(DataRow[] rowArr)
        {
            foreach (DataRow item in rowArr)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                    msg = e.Message;

                }

                Console.WriteLine(msg);
            }
        }
        private static void Print(DataTable dt)
        {
            foreach (DataRow item in dt.Rows)
            {
                string msg = "";
                try
                {
                    msg = $"id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}";
                }
                catch (Exception e)
                {
                     msg =e.Message;

                }

                Console.WriteLine(msg);
            }
        }
    }
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图