我目前陷入了一个我无法理解的问题:
以下代码生成数据表(“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查询并检索数据表。
答案 0 :(得分:0)
没关系,我发现了自己的错误。在类中管理基本的SQLQueries;我使用了一个链接到类而不是方法的Datatable实例,所以当我回想起使用这个实例的方法时,我丢失了之前填充的Datatable ......
我的坏:/