数据表的和字符串数据类型

本文关键字:数据类型 字符串 数据表 | 更新日期: 2023-09-27 18:27:53

我想计算数据表中字符串数据类型列的和。

我已经试过了:

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

但我得到了这个错误:

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

数据表的和字符串数据类型

这个怎么样:

int omarks = dt.Rows.Select(dr=>(int)dr["Marks"]).Sum();
tbobtained.Text = omarks.ToString();

dr是lambda函数的参数,它接受一个数据行(即dr)并返回Marks列的整数值。

如果您想了解此代码的工作原理,您需要更新LINQ和C#lambda表达式。

它一定不喜欢嵌套的函数调用,即使表达式语法的文档中没有提到任何问题。

我尝试将对Convert()的调用提取到这样的计算列中。。。

static void Main(string[] args)
{
    int[] data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    DataTable dt = CreateDataTable(data);
    int omarks = Convert.ToInt32(dt.Compute("Sum(MarksInt)", ""));
    string text = omarks.ToString();
    Console.WriteLine(omarks == data.Sum());
}
static DataTable CreateDataTable(IEnumerable<int> data)
{
    DataTable table = new DataTable();
    table.Columns.Add("Marks", typeof(string));
    table.Columns.Add("MarksInt", typeof(int), "Convert(Marks, 'System.Int32')");
    foreach (int i in data)
    {
        DataRow row = table.NewRow();
        row["Marks"] = i.ToString();
        table.Rows.Add(row);
    }
    return table;
}

并且它在不抛出CCD_ 3的情况下执行并且正确地打印CCD_。