【问题标题】:Invalid usage of aggregate function Sum() and Type: String while computing the SUM with DATATABLE in C#在 C# 中使用 DATATABLE 计算 SUM 时聚合函数 Sum() 和 Type: String 的使用无效
【发布时间】:2013-10-07 06:53:24
【问题描述】:

我在使用 DataTable 计算 SUM 时遇到以下错误。

Invalid usage of aggregate function Sum() and Type: String.

我正在使用以下代码:

lblQuestionnaireTotalTime.Text = CalculateMinutes(
                Convert.ToInt32(
                (
                (DataSet)Session["DsQuestionaire"]).Tables["Questions"]
                .Compute("Sum(EstimatedCompletionTime)", "")));

它总是抛出一个错误。 我试过how-to-calculate-the-sum-of-the-datatable-column-in-asp-net

how-can-i-get-a-sum-for-the-column-pieces-in-a-datatable 和其他一些链接,但无法解决问题。

这是我如何将列添加到数据表

dtQuestions.Columns.Add(new DataColumn("EstimatedCompletionTime", typeof(Int32)));

【问题讨论】:

  • 天真的问题,但是...... EstimatedCompletionTime 的类型是什么?
  • 你试过 Sum(Convert(EstimatedCompletionTime, 'System.Int32')) 吗?
  • 它说Compute方法只需要1个参数
  • 它说“聚合参数中的语法错误:需要一个可能带有 'Child' 限定符的列参数。”
  • SO 上的某人(抱歉现在找不到)建议使用 LINQ 来做类似的事情(它也适用于 DataTable)。给它一个机会!

标签: c# asp.net python-3.x datatable sum


【解决方案1】:

转换字符串列。

object sumObject = dtTable.Compute("Sum(Convert(" + col_Name + ", 'System.Int32')","");

【讨论】:

    【解决方案2】:

    尝试更改列数据类型

    t.Columns["Price"].DataType=typeof(int);
    

    【讨论】:

      【解决方案3】:

      您无法计算字符串类型的列的Sum。您需要确保您的列具有整数类型。

      【讨论】:

      • 您确定(DataSet)Session["DsQuestionaire"]).Tables["Questions"] 具有完全相同的列类型吗?你能得到它的类型并检查吗?
      • 实际上会话并没有在 LogOut 上破坏,实际上我正在将 1.1 网站转换为 4.0,它们只是在单击 Logout 时重定向到登录页面。这是主要问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2017-10-14
      相关资源
      最近更新 更多