DataTable.Compute错误:无效的聚合函数 Sum()和类型 String 的用法;DataTable 更改数据列的类型方法

DataTable.Compute可以进行聚合函数的操作,在进行DataTable我遇到如标题的错误,在此记录一下。
如下是DataTable.Compute方法的应用通过后面的两个条件把筛选数据的栏位1进行数量相加。
发生标题的原因为:“栏位1”的属性并不是int型,导致不能相加并报错。将栏位调整对应类型成功。链接为在c#调整类型的方法,提供参考。

int nNum = 0;
string sPartNo
object obj = DT.Compute("Sum(栏位1)", "栏位2='123' and 栏位3 = 'T'");
 if (obj != null && !string.IsNullOrEmpty(obj.ToString()))
{
 nNum = int.Parse(obj.ToString());
}

附带类型调整的方法提供参考:
需要注意的是:修改类型将数据重新写入需要转换为对应类型才能写入。

/// <summary>
/// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改记录值,4.返回希望的结果)
/// </summary>
/// <param name="argDataTable">数据表DataTable</param>
/// <returns>数据表DataTable</returns>  

 private static DataTable UpdateDataTable(DataTable argDataTable)
   {
       DataTable dtResult = new DataTable();
       //克隆表结构
       dtResult = argDataTable.Clone();
       foreach (DataColumn col in dtResult.Columns)
       {
           if (col.ColumnName == "数量")
           {
               //修改列类型
               col.DataType = typeof(int);
           }
           if (col.ColumnName == "日期")
           {
               //修改列类型
               col.DataType = typeof(String);
           }
       }
       foreach (DataRow row in argDataTable.Rows)
       {
           DataRow rowNew = dtResult.NewRow();
           rowNew["姓名"] = row["姓名"];
           //修改记录值
            rowNew["日期"] = Convert.ToDateTime(row["日期"]).ToString("yyyy-MM-dd").ToString();
           //修改记录值
           rowNew["数量"] = GvNet.Cvt.ToInt16(row["数量"].ToString()); 

           dtResult.Rows.Add(rowNew);
       }
       return dtResult;
   }
微信扫码订阅
UP更新不错过~
关注
  • 2
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

认真看海

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值