C# DataTable处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mj_kk/article/details/76871162

最近用DataTable用得的确有点多,开始的想法是用Linq对datatable进行 处理,进行查阅了资料之后发现,还有这种操作,今天也进行一下总结:

1.只显示datatable其中需要的几列字段

如:
     
        DataTable yl_dt = new DataTable();
            DataColumn dc0 = new DataColumn("卡号");
            DataColumn dc1 = new DataColumn("空");
            DataColumn dc2 = new DataColumn("摘要");
            DataColumn dc3 = new DataColumn("交易金额");
            DataColumn dc4 = new DataColumn("交易时间");
            DataColumn dc5 = new DataColumn("交易序列号");
            DataColumn dc6 = new DataColumn("授权号");
            DataColumn dc7 = new DataColumn("手续费");
            DataColumn dc8 = new DataColumn("冲正标志");            
            yl_dt.Columns.Add(dc0);
            yl_dt.Columns.Add(dc1);
            yl_dt.Columns.Add(dc2);
            yl_dt.Columns.Add(dc3);
            yl_dt.Columns.Add(dc4);
            yl_dt.Columns.Add(dc5);
            yl_dt.Columns.Add(dc6);
            yl_dt.Columns.Add(dc7); 
            yl_dt.Columns.Add(dc8);
   

2.datatable中某个字段的求和


DataTable dt = yl_dt.DefaultView.ToTable(false, new string[] {"卡号", "交易序列号", "摘要", "冲正标志", "交易金额", "交易时间" });
            foreach (DataRow row in dt.Rows)
            {
                zfb_money += double.Parse(row["字段名"].ToString());
            }
3.datatable根据条件进行查询
        /// <summary>
        ///  dataTable根据条件查询
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <param name="name">查询字段</param>
        /// <param name="value">查询条件值</param>
        /// <returns></returns>
        public DataTable ConditionQuery(DataTable dt, string name, string value)
        {
            //根据条件查询
            DataRow[] dr = dt.Select(name + " = '" + value + "'");
            DataTable dt1 = dt.Clone();
            for (int i = 0; i < dr.Length; i++)
            {
                dt1.ImportRow(dr[i]);
            }
            return dt1;
        }

4.清除datatable中数据某字段相同的数据

         /// <summary>
        /// 清除 退款 数据(数据中有重复的商品订单号,则清除这两条记录)
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <param name="name">字段名</param>
        /// <returns></returns>
        public DataTable RefundDataExit(DataTable dt, string name)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string dr = dt.Rows[i][name].ToString();
                for (int j = i + 1; j < dt.Rows.Count; j++)
                {
                    string dr1 = dt.Rows[j][name].ToString();
                    if (dr == dr1)
                    {
                        dt.Rows.RemoveAt(i);
                        dt.Rows.RemoveAt(j - 1);
                        if (i == 0)
                        {
                            i = -1;
                        }
                    }
                }
            }
            return dt;
        }

ps:四的方法也可以用作清除两个datatable中相同的数据行


如果大家有更好的方法,或者对datatable操作有其他的方法,欢迎指教

猜你喜欢

转载自blog.csdn.net/Mj_kk/article/details/76871162