Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算数据表列中的总数的最有效方法是什么_C#_Datatable - Fatal编程技术网

C# 计算数据表列中的总数的最有效方法是什么

C# 计算数据表列中的总数的最有效方法是什么,c#,datatable,C#,Datatable,我有一个数据表,其中有一列名为x value 我想返回该列的和值 该列中始终包含一个数字(因此无需担心空/空值) 我的代码: int x = 0; foreach (DataRow dr in SqlCon.ds.Tables[3].Rows) { foreach (DataColumn dc in SqlCon.ds.Tables[3].Columns)

我有一个数据表,其中有一列名为
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.已经看过了,但是找不到重复的(我想大概是星期一早上,我的谷歌技能不是最好的!)

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

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]);
}
然后将其转换为适当的数字类型


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

什么是最佳?最快?@user3185569最有效对不起。将更新问题。最简洁的:
int sum=dataTable.AsEnumerable().sum(row=>(int)row[“x”])
var sum=dataTable.Compute(“sum(xvalue)”)
@AlexanderPetrov提交回答,我会将其标记为正确,因为这解决了我的问题。不是在Linq上受过教育,但似乎很有效!谢谢使用它的优点是什么:
intsum=dataTable.AsEnumerable().sum(row=>(int)row[“x]”)Thanks@SCramphornforeach比linq快(因为您的目标是提高效率):@SCramphorn而且它肯定比
.Compute()快。请试用它们并在大数据上进行比较。非常感谢。我会努力尝试,当我走过它时,我会变得更有意义。因此,最终我需要的是Convert.ToInt32,但就性能而言,我理解。
object sumOfX = SqlCon.ds.Tables[3].Compute("Sum(x value)", null);