使用DataTable计算列数据总和

17 篇文章 1 订阅

使用DataTable计算列数据总和

       大家都知道在DataTable中是可以去计算某列数据的总和的,但是在不改变本表数据类型和sql语句的情况下,要计算列的数据类型为string时,应该怎么操作呢?下面给大家带来一个笨方法,欢迎吐槽!

  static void Main(string[] args) {
            //初始化一个DataTable
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("id", typeof(string));
            dataTable.Columns.Add("name", typeof(string));
            dataTable.Columns.Add("money", typeof(string));
            dataTable.Columns.Add("date", typeof(string));

            for (int i = 0; i < 1000; i++)
            {
                DataRow dtRow = dataTable.NewRow();
                dtRow["id"] = (i + 1) + "";
                dtRow["name"] = "第" + (i + 1) + "的姓名";
                dtRow["money"] = new Random().Next(100, 100000) + "";
                dtRow["date"] = DateTime.Now.ToString("ffffff");
                dataTable.Rows.Add(dtRow);
            }
            //创建一个新的DataTable,用来将原DataTable的数据进行复制
            DataTable copyDt = new DataTable();
            //给表格添加列,及列对应的数据类型
            foreach (DataColumn item in dataTable.Columns)
            {
                if (item.ColumnName.Equals("name") || item.ColumnName.Equals("date"))
                {
                    copyDt.Columns.Add(item.ColumnName, typeof(string));
                }
                else
                {
                    copyDt.Columns.Add(item.ColumnName, typeof(int));
                }
            }
            //将原DataTable中的数据添加到新的表格中去,并进行数据转换(注意,如果用的是浮点型数据类型的话,在创建新的表格列的时候修改对应的数据类型,此处我用的是int类型作为示例)
            foreach (DataRow dtRow in dataTable.Rows)
            {
                DataRow new_dtRow = copyDt.NewRow();
                foreach (DataColumn item in copyDt.Columns)
                {
                    if (item.DataType.Name.Equals("String"))
                    {
                        new_dtRow[item.ColumnName] = dtRow[item.ColumnName].ToString();
                    }
                    else if (item.DataType.Name.Equals("Int32"))
                    {
                        new_dtRow[item.ColumnName] = Convert.ToInt32(dtRow[item.ColumnName].ToString());
                    }
                }
                copyDt.Rows.Add(new_dtRow);
            }
            //计算指定列数据的总和
            var moneyCount = copyDt.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("money"))).Sum();

            Console.ReadKey();
    }

  结语:   目光远大,目标明确的人往往非常自信,而自信与人生的成败息息相关。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值