DataTable详细介绍

20 篇文章 0 订阅
5 篇文章 0 订阅
DataTable 是一种行列的数据结构,是一个二维的数组,能够转化为试图,转化为表,在和数据库交互时有重要作用;它常常作为DataSet的一个子集
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataTable详解
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();//创建表
            dt.Columns.Add("ID", typeof(Int32));//添加列
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Age", typeof(Int32));
            dt.Rows.Add(new object[] { 1, "张三", 20 });//添加行
            dt.Rows.Add(new object[] { 2, "李四", 30 });
            dt.Rows.Add(new object[] { 3, "王五", 40 });
            DataView dv = dt.DefaultView;//获取表的视图
            dv.Sort = "ID DESC";   //按照ID排序
            dv.ToTable();//转化为表

            //创建列
            //DataColumn dc = new DataColumn();
            //dt.Columns.Add(dc);
            //创建带列名和类型的列
            //DataColumn dc = new DataColumn("列名", System.Type.GetType("System.String"));
            //dt.Columns.Add(dc);

            //创建行
            //DataRow dr = dt.NewRow();
            //dt.Rows.Add(dr);
            //或者
            //dt.Rows.Add();
            //还可以创建时直接赋值
            //dt.Rows.Add("张三", DateTime.Now);
            //还可以通过复制其他表的某一行来创建
            //dt.Rows.Add(dt2.Rows[i].ItemArray);

            //取值和赋值
            /*
             对表新建行的赋值
             DataRow dr=dt.NewRow();
             dr[0]="张三";            通过索引赋值
             dr["列名"]=DataTime.Now; 通过列名赋值

             对表已有行的赋值
             dt.Rows[0][0]="张三";             通过索引赋值
             dt.Rows[0]["列名字"]=DateTime.Now;通过列名赋值

            取值
            string name=dt.Rows[0][0].ToString();
            string time=dt.Rows[0]["列名字"].ToString();
             */


            //筛选行
            //DataRow[] drs = dt.Select("列名字 is null");
            //DataRow[] drs = dt.Select("列名字 ='李四'");
            //DataRow[] drs = dt.Select("column like '张%'");
            //DataRow[] drs=dt.Select("column0 like '张%'","column0 DESC");

            //删除行
            //使用DataTable.Rows.Remove(DataRow)方法
            //dt.Rows.Remove(dt.Rows[0]);
            //使用DataTable.Rows.RemoveAt(index)方法
            //dt.Rows.RemoveAt(0);
            //使用DataRow.Delete()方法
            //dt.Row[0].Delete();
            //dt.AcceptChanges();
            //-----区别和注意点-----
            //Remove()和RemoveAt()方法是直接删除
            //Delete()方法只是将该行标记为deleted,但是还存在,还可DataTable.RejectChanges()回滚,使该行取消删除。
            //用Rows.Count来获取行数时,还是删除之前的行数,需要使用DataTable.AcceptChanges()方法来提交修改。
            //如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。
            //for (int i = dt.Rows.Count - 1; i >= 0; i--)
            //{
            //    dt.Rows.RemoveAt(i);
            //}

            //复制表
            //复制表,同时复制了表结构和表中的数据
            //DataTable dtNew = new DataTable();
            //dtNew = dt.Copy();
            复制表
            //DataTable dtNew = dt.Copy();  //复制dt表数据结构
            //dtNew.Clear()  //清空数据
            //for (int i = 0; i < dt.Rows.Count; i++)
            //{
            //    if (条件语句)
            //    {
            //        dtNew.Rows.Add(dt.Rows[i].ItemArray);  //添加数据行
            //    }
            //}
            克隆表,只是复制了表结构,不包括数据
            //DataTable dtNew = new DataTable();
            //dtNew = dt.Clone();
            如果只需要某个表中的某一行
            //DataTable dtNew = new DataTable();
            //dtNew = dt.Copy();
            //dtNew.Rows.Clear();//清空表数据
            //dtNew.ImportRow(dt.Rows[0]);//这是加入的是第一行

        }
    }
}

  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值