В данный момент я застрял в проблеме, которую не могу понять:
Следующий код создает Datatable ("outDT") для последующего заполнения сетки. Datatable создается с использованием строк других таблиц данных, выпущенных из различных SQL-запросов (те функции «get», которые возвращают также Datatable).
Проблема возникает, когда я вызываю метод "getAverage". Сразу после вызова Datatable «pcDT» обнуляется и вызывает дальнейшее «Изменение коллекции; операция перечисления может не выполняться». ошибка в следующем цикле.
Я никогда не изменял ни одну строку «pcDT» Datatable в цикле foreach, ни в проблемном методе «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 вызывает известную «коллекцию, операция перечисления может не выполняться». ошибка
(**) И вот его вызов метода, который сбрасывает Datatable «pcDT». Эта функция просто вызывает запросы MySQL и получает Datatable.