数据表的和字符串数据类型
本文关键字:数据类型 字符串 数据表 | 更新日期: 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_。