DataTable拓展函数

这篇博客详细介绍了如何使用C#操作DataTable,包括初始化DataTable、设置列名和数据类型、添加数据行、遍历数据以及进行数据操作如合并和复制。示例代码演示了DataTable的基本用法,适合初学者掌握数据操作技巧。
摘要由CSDN通过智能技术生成

public static void RunTest()
        {
            // 初始化datatable,并指定表名为TableName,TableName可以不指定
            DataTable dt = new DataTable("TableName");
            dt.TableName = "TableName";// 指定表名为TableName

            // 设置datatable的列名,忽略大小写,并且指定该列的数据类型;数据类型设置可忽略
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("FId", typeof(int));
            dt.Columns.Add("P1", typeof(string));
            dt.Columns.Add("P2", typeof(string));

            // 新增一行数据
            DataRow dr = dt.NewRow();
            dr.ItemArray = new object[] { 1, 0, "P1", "P2" };
            dt.Rows.Add(dr);

            DataRow dr2 = dt.NewRow();
            dr2.ItemArray = new object[] { 2, 0, "P1", "P2" };
            dt.Rows.Add(dr2);


            // 遍历datatable,显示每一行数据
            foreach (DataRow row in dt.Rows)
            {
                object value;
                // 通过遍历列的方式,获取该行的每一列数据
                foreach (DataColumn column in dt.Columns)
                {
                    value = row[column];
                }
                // 通过下标获取该行指定列的数据
                value = row[0];

                // 通过列名,获取该行指定列的数据
                value = row["Id"];
            }


            // 设置表特定行与列的数据值。
            //dt.Rows[i].SetField<int>(dc, int.Parse(hc.Values[i]);
            // 复制表
            DataTable dt2 = dt.Clone();

            // 将 dt2 表合并到表 dt
            dt.Merge(dt2); 

            // 获取datatable某列所有数据
            // 注意:Field<T> 如果数据类型和的datatable该列的数据类型不一致时会触发类型转换失败错误,T如果是object可以避免该问题
            List<object> datas = dt2.AsEnumerable().Select(x => x.Field<object>("Id")).ToList();
            // 获取datatable某几列所有数据
            List<Tuple<int,int>> datas2 = dt.AsEnumerable().Select(x => new Tuple<int, int>(x.Field<int>("Id"), x.Field<int>("fid"))).ToList();

            // 获取dt的指定列,生成一个新的dt
            DataTable dtResult = dt.DefaultView.ToTable(false, new string[] { "Id", "FId" });
            // 修改DataTable的列名
            dtResult.Columns["FId"].ColumnName = "Parent Id";
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值