foreach循环期间的数据表重置

时间:2011-08-21 22:46:38

标签: foreach reset

我目前陷入了一个我无法理解的问题:

以下代码生成数据表(“outDT”)以便稍后填充网格视图。使用从各种SQL静态发出的其他数据表的行(这些“get”函数也返回Datatable)构建数据表。

当我调用“getAverage”方法时会出现问题。在调用之后,“pcDT”数据表无效并导致进一步“收集被修改;枚举操作可能无法执行”。下一循环出错。

我从未在foreach循环中修改“pcDT”数据表的单行,也没有修改有问题的“getAverage”方法。

    public DataTable getReportTable(int idClient)
    {
        Object thisLock = new Object();

        DataTable outDT = new DataTable();
        outDT.Columns.Add("PC Name");

        DataTable pcDT = getPCNames(idClient);
        *foreach (DataRow pcRow in pcDT.Rows)*
        {
            DataRow outRow = outDT.NewRow();
            outRow["PC Name"] = pcRow["Name"];

            **DataTable collectedDT = getAverage((int)pcRow["idPC"]);**
            foreach (DataRow dataRow in collectedDT.Rows)
            {
                outDT.Columns.Add(dataRow["name"].ToString());
                outRow[dataRow["name"].ToString()] = dataRow["AVG(MeasurePoint.dataValue)"];
            }

            outDT.Rows.Add(outRow);
        }

        return outDT;
    }

(*)这个foreach导致着名的“集合被修改;枚举操作可能无法执行”。错误

(**)这里是他重置“pcDT”Datatable的方法调用。该函数只需调用mySQL查询并检索数据表。

1 个答案:

答案 0 :(得分:0)

没关系,我发现了自己的错误。在类中管理基本的SQLQueries;我使用了一个链接到类而不是方法的Datatable实例,所以当我回想起使用这个实例的方法时,我丢失了之前填充的Datatable ......

我的坏:/