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);