日期:2014-05-17  浏览次数:20667 次

大量数据时 用一个datatable中的某数据更新另一datatable效率问题
两个datatable都含有大量数据时 用一个datatable中的某数据更新另一datatable效率很慢 大家有什么办法显著的提高运行速度吗?代码如下,很简单的一个更新

    /// <summary>
    /// 根据员工ID和期间提取该员工五险一金数据,更新源DT
    /// </summary>
    /// <param name="SourceDT">源DT</param>
    /// <param name="dtSS">五险一金DT</param>
    protected static void UpdateDTSS(DataTable SourceDT, DataTable dtSS)
    {
        if (SourceDT.Rows.Count > 0)
        {
            for (int k = 0; k < SourceDT.Rows.Count; k++)
            {
                for (int j = 0; j < dtSS.Rows.Count; j++)
                {
                    if (SourceDT.Rows[k]["EMPLOYEEID"].Equals(dtSS.Rows[j]["EMPLOYEEID"])
                        && SourceDT.Rows[k]["ITEMNAME"].Equals(dtSS.Rows[j]["INSURANCETYPE"])
                        && SourceDT.Rows[k]["Amount"].ToString() == "0")
                    {
                        //固定薪资项为0 则用社保数据更新
                        SourceDT.Rows[k]["Amount"] = dtSS.Rows[j]["RealPay"];
                    }
                }
            }
        }
    }
datatable更新 datatable操作

------解决方案--------------------
你2个datatable数据那里来的?
更新之后再怎么操作呢?

------解决方案--------------------
这个最好在数据库上用存储过程做。

如果在本地作,可以先对dtSS进行索引(如果EMPLOYEEID唯一就对它进行索引,如果EMPLOYEEID和INSURANCETYPE的联合唯一,则对联合进行索引(见下面例子):

protected static void UpdateDTSS(DataTable SourceDT, DataTable dtSS)
{