datatable.compute 函数 很慢?
object PAY_AMT_SUM = null;
foreach (DataRow dr in dtSel.Rows)
{
empCD = dr["EMP_CD"].ToString();
PAY_AMT_SUM = dtSel.Compute("Sum(PAY_AMT)", " EMP_CD = '" + empCD + "'");
dr["PAY_AMT_SUM"] = PAY_AMT_SUM;
}
datatable dtSel的数据 4千件,很慢。。。
没有别的方法解决吗?
请指教。。
------解决方案--------------------用sql算 别在内存里算
------解决方案--------------------你那个添加一个表达式列就行了(相当于SQL中的计算列)
http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression(v=vs.80).aspx
或者用Linq
------解决方案--------------------肯定的你循环了4000多条。这类的计算,可以在数据库中用sql算。
------解决方案--------------------var query=from d in dtSel.AsEnumerable()
group d by d.Field<string>("EMP_CD") into g
select new
{
Key=g.Key,
PAY_AMT_SUM=g.Sum(x=>x.Field<int>("PAY_AMT"))
}