【问题标题】:computing sum of varchar datatype in a datatable计算数据表中 varchar 数据类型的总和
【发布时间】:2012-03-13 10:59:09
【问题描述】:

有人可以帮我计算数据表中 varchar 数据类型列的总和。

我已经试过了:

Int32 omarks = Convert.ToInt32(dt.Compute("Sum(Convert(Marks, 'System.Int32'))", ""));
tbobtained.Text = omarks.ToString();

但是我收到了这个错误:

聚合参数中的语法错误:需要单个列 带有可能的子限定符的参数。

我会感谢在这方面帮助我的人。

【问题讨论】:

  • 请在您的问题中添加适当的语言标签
  • 您正在使用哪个数据库...??
  • 我正在使用 sql server 2008

标签: c# datatable sum


【解决方案1】:

Sum 似乎缺少 )

Sum(Convert(Marks, 'System.Int32'))

【讨论】:

  • 是的,你是对的,但已经添加)我得到了同样的错误。现在我的代码是 Int32 omarks = Convert.ToInt32(dt.Compute("Sum(Convert(Marks, 'System.Int32'))", ""));
【解决方案2】:

你可以使用 CAST:

SELECT sum(CAST(MyVarcharCol AS INT)) FROM Table

【讨论】:

  • 对不起,我在 C# 的 DataTable 中遇到了这个问题。您的答案适用于 sql server,但不适用于 C#.Net 中的 DataTable。谢谢无论如何至少你试图帮助我
【解决方案3】:

基于MSDN,你试过了吗:

Int32 omarks = Convert.ToInt32(dt.Compute("Sum(Marks)", ""));
tbobtained.Text = omarks.ToString();

标准是 DataColumn Marks 应定义为 Int32。 Compute 的第一个参数支持聚合术语,但不支持您在 Compute 方法中进行的 Convert 调用。

【讨论】:

  • code4life 兄弟实际上正在设计一个标记表。我必须将 DataType 设置为 Varchar,因为如果学生缺席,我希望用户输入“A”。我终于不得不像处理它一样这。 {int omarks = 0; foreach (DataRow dr in dt.Rows) { if (dr["Result"].ToString() != "A") { omarks = omarks + int.Parse(dr["Marks"].ToString()); } } tbobtained.Text = omarks.ToString();}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
相关资源
最近更新 更多