C#三分钟教你理解DataTable、Datarow、DataColumn的关系以及用法

4 篇文章 0 订阅

C#三分钟教你理解DataTable、Datarow、DataColumn的关系以及用法!

码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。
码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。
码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。
最终实现下图的效果:
在这里插入图片描述



前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、几者的关系

几者的关系如下所示:

在这里插入图片描述

DataSet里可以放多个DataTable,,其次就是DataTable里是由两部分组成的,一个是DataColumn,一个是DataRow。可以将其想像成为一个Excel文件,Dataset就是每页excel,dataTable就是每页内存储的数据,datarow和dataColumn就当成是数据的行和列。所以我们操作其数据可以根据表头也可以根据行和列的索引进行相关操作。

二、声明以及初始化

1、DataTable的创建

代码如下:

//1、首先创建一个DataTable对象 表名为Mytable
            DataTable dt = new DataTable("Mytable");

2、DataColumn的创建

代码如下:

 //2、创建四列并添加到DataTable的列中 列名分别是 姓名 性别 年龄 兴趣
            dt.Columns.Add(new DataColumn("姓名"));
            dt.Columns.Add(new DataColumn("性别"));
            dt.Columns.Add(new DataColumn("年龄"));
            dt.Columns.Add(new DataColumn("兴趣"));

F12进入到DataColumn的构造函数可以看到小括号内的字符串就是列名称
在这里插入图片描述

3、DataRow的创建

代码如下:


 //3、下面我们需要往这个表里添加一些数据
            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt.NewRow();
                //分别给各列名如下的行赋值
                dr["姓名"] = "张三"+i;
                dr["性别"] = "男";
                dr["年龄"] = 20+i;
                dr["兴趣"] = "打篮球" + i;
                //将此条记录加入到dt中去
                dt.Rows.Add(dr);
            }

注意这里要用到DataTable.NewRow()方法来创建一个新的实例。

4、DataSet的创建

代码如下:


 //4、DataSet 声明以及初始化:
           //将这个DataTable加入到DataSet中去
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);

5、数据查询

①遍历DataSet中所有DataTable

foreach (var item in ds.Tables )//遍历DataSet中的所有Datatable
{
	DataTable dt0 = item as DataTable;
}

②遍历DataTable中所有DataColumn

//遍历Datatable中所有列并打印每一行的表头
foreach (var itemColumns in dt0.Columns)
{
//这里要用到as表达式或者强制类型转换,否则的话没法找到其ColumnName属性。
Console.Write((itemColumns as DataColumn).ColumnName+"||");
...
}

③遍历DataTable中所有DataRow数据

//第一种方法  采用扩展方法 .Field的方式
Console.WriteLine("-----方法1:采用扩展方法的方式----------");
foreach (var itemRows in dt0.Rows)
{
Console.Write((itemRows as DataRow).Field<string>("姓名")+"  ");
Console.Write((itemRows as DataRow).Field<string>("性别") + " ");
Console.Write((itemRows as DataRow).Field<string>("年龄") + " ");
Console.WriteLine((itemRows as DataRow).Field<string>("兴趣") +" ");
...
}

Console.WriteLine("-----方法2:采用查询索引的方式----------");
for (int i = 0; i < dt0.Rows.Count; i++)
{
	Console.WriteLine("{0}{1}{2}{3}", dt0.Rows[i][0], dt0.Rows[i][1], dt0.Rows[i][2], dt0.Rows[i][3]);
}

这里用到了DataRow的扩展方法.Field,可以F12进去看他的定义如下:
在这里插入图片描述 其中方法一我采用这种格式: Field<返回值类型>(“列名称”),方法二类似数据库查表的方式一样

6、完整代码

代码量不多就不上传git了拷贝过去就能用了,完整代码如下:

  //1、首先创建一个DataTable对象 表名为Mytable
            DataTable dt = new DataTable("Mytable");
            //2、创建四列并添加到DataTable的列中 列名分别是 姓名 性别 年龄 兴趣
            dt.Columns.Add(new DataColumn("姓名"));
            dt.Columns.Add(new DataColumn("性别"));
            dt.Columns.Add(new DataColumn("年龄"));
            dt.Columns.Add(new DataColumn("兴趣"));
            //3、下面我们需要往这个表里添加一些数据
            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt.NewRow();
                //分别给各列名如下的赋值
                dr["姓名"] = "张三"+i;
                dr["性别"] = "男";
                dr["年龄"] = 20+i;
                dr["兴趣"] = "打篮球" + i;
                //将此条记录加入到dt中去
                dt.Rows.Add(dr);
            }
            
            //将这个DataTable加入到DataSet中去
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);

            foreach (var item in ds.Tables )//遍历DataSet中的所有Datatable
            {
                DataTable dt0 = item as DataTable;
                foreach (var itemColumns in dt0.Columns)//遍历Datatable中所有列并打印每一行的表头
                {
                    Console.Write((itemColumns as DataColumn).ColumnName+"||");
                }
                Console.WriteLine();

                //第一种方法  采用扩展方法 .Field的方式
                Console.WriteLine("--------------采用扩展方法的方式----------------");
                foreach (var itemRows in dt0.Rows)
                {
                    Console.Write((itemRows as DataRow).Field<string>("姓名")+"  ");
                    Console.Write((itemRows as DataRow).Field<string>("性别") + "   ");
                    Console.Write((itemRows as DataRow).Field<string>("年龄") + "   ");
                    Console.WriteLine((itemRows as DataRow).Field<string>("兴趣") + "   ");
                }

                Console.WriteLine("--------------采用查询索引的方式----------------");
                for (int i = 0; i < dt0.Rows.Count; i++)
                {
                    Console.WriteLine("{0}  {1}   {2}   {3}", dt0.Rows[i][0], dt0.Rows[i][1], dt0.Rows[i ][2], dt0.Rows[i][3]);
                }
            }
            Console.ReadKey();
        }

总结

以上就是今天要讲的内容,简单介绍了DataSet、DataTable、DataColumn、DataRow的使用。

码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。 码字不易,点赞关注加收藏,谢谢各位看官老爷了!!!!。
  • 28
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YZW0123

谢谢大家的支持,请关注我哦!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值