计算DataTable列中总数的最有效方法是什么

时间:2017-07-03 10:31:31

标签: c# datatable

我有一个DataTable,其中包含一个名为x value

的数字列

我想返回该列的和值。

列中始终有一个数字(因此无需担心空值/空值)。

我的代码:

            int x = 0;

            foreach (DataRow dr in SqlCon.ds.Tables[3].Rows)
            {
                foreach (DataColumn dc in  SqlCon.ds.Tables[3].Columns)
                {
                    if (dc.ColumnName == "x value")
                    {
                        //calc value
                    }

                }
            }

非常感谢,

PS。已经看了SO但是找不到副本(我假设它是关于但是它是星期一早上,我的谷歌技能不是最好的!)

2 个答案:

答案 0 :(得分:1)

你需要循环每一行,这是肯定的。但是,您可以获取列索引一次,以避免对列进行不必要的循环:

int sum = 0;
DataSet ds = new DataSet();

DataTable dt = ds.Tables[3];
int columnIndex = dt.Columns["x column"].Ordinal;
foreach (DataRow dr in dt.Rows)
{
    sum += Convert.ToInt32(dr[columnIndex]);
}

答案 1 :(得分:1)

object sumOfX = SqlCon.ds.Tables[3].Compute("Sum(x value)", null);

然后转换为适当的数字类型。

请参阅DataTable.Compute

注意:在编写代码方面,这可能是高效,但如果你真的需要挤压最后一个时钟周期,那么在性能方面可能会有更高效的方法......但话又说回来,使用DataTable和C#可能是错误的选择。