zoukankan      html  css  js  c++  java
  • DataSet & DataTable &DataRow 深入浅出(转)

    原文连接:https://www.cnblogs.com/wangbaicheng1477865665/p/8213917.html

    本篇文章适合有一定的基础的人去查看 ,最好学习过一定net 编程基础在来查看此文章。

    1.概念

      DataSetADO.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();
    }
    }
    }

    复制代码

    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");//指定表名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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]);
    
            }
            </span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> item <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dt.Columns)
            {
                Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">遍历表头方式2~~~</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> item);
            }
            ds.Tables.Add(dt);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">把一个表加入到数据集中</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">当前数据集中有“</span><span style="color: rgba(128, 0, 0, 1)">"</span>+ ds.Tables.Count + <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">”个表   </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">当前数据集的表名   </span><span style="color: rgba(128, 0, 0, 1)">"</span> + ds.Tables[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">].TableName);
            Console.Read();</span></pre>
    
    复制代码

     这样一张空的表格,我们就有了,下边就是我们如何添加一个数据行了,别急,我们先来看下DataRow的使用。关于创建一个数据行我们会在高级部分分解。

    这里简要说明下DataTable 的其他用法

    1 DataTable的复制和数组复制是一样的使用,就是完全Copy 一个方法。

    2.DataTable 的克隆,克隆指的是克隆表结构,含主键列

    3.我们使用Merge 合并连个表

    下列出上诉简要代码

    复制代码
    static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                dt.Columns.AddRange(
                        new DataColumn[]
                        {
                            new DataColumn("ID",typeof(int)),
                            new DataColumn("UserName",typeof(string)),
                            new DataColumn("Age",typeof(int))
                        }
                    );
                dt.Rows.Add(1, "xiaoli", 33);
                dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };//给哪一列设置主键
                DataTable dtCopy = dt.Copy();//复制表,连数据和表结构一起复制
                DataTable dtClone = dt.Clone();//克隆一个表的结构,不包含数据
                DataRow dr= dtClone.NewRow();
                dr[0] = 2;
                dr[1] = "xiaomei";
                dr[2] = 23;
                dtClone.Rows.Add(dr);
                dt.Merge(dtClone);//当主键不同的时候,就会出现合并到一起,如果相同以被合并的表为主,表结构不一致也可以合并,这里就不掩饰了
                Console.WriteLine(dt.Rows.Count);
                Console.Read();
    ;        }
    复制代码

     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]);

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

    }

    复制代码

    我们很多程序员在开发的时候,都会认为这就把一个数据行添加到DataTable 里面了,其实不是这样的?具体看高级部分

    5.综合应用之CRUD(增删改查)

    5.1新增 

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

    通过上诉分析,我们会发现,添加的数据,并没有提交到内存上,只是程序临时存储的。那么我们怎么提交呢,看如下代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    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();
            }
        }
    }

      

     提交代码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(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">新增没有提交打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr0.RowState);
            dt.AcceptChanges();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增提交</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">新增提交后打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr0.RowState);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">---------------------------修改---------------------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            DataRow dr1 </span>= dt.Rows[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">];
            dr1[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wbcsky</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">修改没有提交打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr1.RowState);
            dt.AcceptChanges();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增提交</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">修改提交后打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr1.RowState);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">---------------------------删除---------------------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            DataRow dr2</span>=dt.Rows[<span style="color: rgba(128, 0, 128, 1)">0</span>]  ;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除第一条</span>
            dr2.Delete();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">这里没有使用dt.rmove 和dt.rmoveat,因为这两个方法直接提交了</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">删除没有提交打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr2.RowState);
            dt.AcceptChanges();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增提交</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">删除提交后打印</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">状态==================</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> dr2.RowState);
            Console.Read();
        }
    
        </span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Print(DataTable dt)
        {
            </span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (DataRow item <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dt.Rows)
            {
                </span><span style="color: rgba(0, 0, 255, 1)">string</span> msg = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
                {
                    msg </span>= $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
                }
                </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e)
                {
                     msg </span>=<span style="color: rgba(0, 0, 0, 1)">e.Message;
                   
                }
              
                Console.WriteLine(msg);
            }
        }
    }
    

    }

    复制代码

    执行结果如下图

    6.综合应用之筛选排序

    我们如果想给上面的表排序,要怎么排序呢?????,其实排序我们使用DataTable.Select 方法就可以,我们看下怎么使用

    我们会看到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 </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
            </span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; <span style="color: rgba(128, 0, 128, 1)">5</span>; i++<span style="color: rgba(0, 0, 0, 1)">)
            {
                dr0 </span>=<span style="color: rgba(0, 0, 0, 1)"> dt.NewRow();
                dr0[</span><span style="color: rgba(128, 0, 128, 1)">0</span>] =<span style="color: rgba(0, 0, 0, 1)"> i;
                dr0[</span><span style="color: rgba(128, 0, 128, 1)">1</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">xiaoming</span><span style="color: rgba(128, 0, 0, 1)">"</span>+<span style="color: rgba(0, 0, 0, 1)">i;
                dr0[</span><span style="color: rgba(128, 0, 128, 1)">2</span>] = <span style="color: rgba(128, 0, 128, 1)">20</span>+i+<span style="color: rgba(0, 0, 255, 1)">new</span> Random().Next(<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">);
                dr0[</span><span style="color: rgba(128, 0, 128, 1)">3</span>] = <span style="color: rgba(0, 0, 255, 1)">new</span> Random().Next(i, <span style="color: rgba(128, 0, 128, 1)">200</span>)%<span style="color: rgba(128, 0, 128, 1)">3</span>==<span style="color: rgba(128, 0, 128, 1)">0</span>?<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">男</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">女</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
               
                dt.Rows.Add(dr0);
            }
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">---------------------------筛选之前---------------------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Print(dt);
            DataRow[] rowArr</span>=   dt.Select(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age &gt;25</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)"> age desc</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">---------------------------筛选之后按年龄排序---------------------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            PrintRow(rowArr);
            Console.Read();
        }
        </span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> PrintRow(DataRow[] rowArr)
        {
            </span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (DataRow item <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> rowArr)
            {
                </span><span style="color: rgba(0, 0, 255, 1)">string</span> msg = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
                {
                    msg </span>= $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
                }
                </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e)
                {
                    msg </span>=<span style="color: rgba(0, 0, 0, 1)"> e.Message;
    
                }
    
                Console.WriteLine(msg);
            }
        }
        </span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Print(DataTable dt)
        {
            </span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (DataRow item <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dt.Rows)
            {
                </span><span style="color: rgba(0, 0, 255, 1)">string</span> msg = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
                {
                    msg </span>= $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">id={ item[0]},name={item[1]},age={item[2]},sex={item[3]}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
                }
                </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e)
                {
                     msg </span>=<span style="color: rgba(0, 0, 0, 1)">e.Message;
                   
                }
              
                Console.WriteLine(msg);
            }
        }
    }
    

    }

    复制代码
  • 相关阅读:
    LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
    LINQ to SQL语句(8)之Concat/Union/Intersect/Except
    LINQ to SQL语句(7)之Exists/In/Any/All/Contains
    LINQ to SQL语句(6)之Group By/Having
    LINQ to SQL语句(5)之Order By
    LINQ to SQL语句(4)之Join
    LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg
    LINQ to SQL语句(2)之Select/Distinct
    java 开发工具记录
    H5播放器内置播放视频(兼容绝大多数安卓和ios)
  • 原文地址:https://www.cnblogs.com/sunny3158/p/14218415.html
Copyright © 2011-2022 走看看