У меня есть два списка строк:
currentRow = содержит информацию о том, что строка должна иметь
currentCol = содержит имена столбцов, в которые должны поступать данные из currentRow.
каждый список содержит 25 (0-24) элементов и упорядочен так же, как и dataRow, в который он должен быть записан.
Я заполняю списки здесь, из ярлыков и текстовых полей в форме:
List<string> currentRow = new List<string>();
List<string> currentCol = new List<string>();
foreach (var c in form11.Controls)
{
if (c.GetType() == typeof(TextBox))
{
var str = c.ToString();
var str1 = str.Substring(35);
currentRow.Add(str1);
}
if (c.GetType() == typeof(Label))
{
var str = c.ToString();
var str1 = str.Substring(34);
currentCol.Add(str1);
}
}
Затем я выбираю строку в dataTable, которую необходимо обновить, из 3-го элемента в currentRow,который является уникальным идентификатором.
var updateRow = arraysDt.Select("SERIAL =" + "'" + currentRow.ElementAtOrDefault(2) + "'");
Теперь я пытаюсь обновить строку из элементов в списках здесь:
for (int i = 0; i < currentRow.Count; i++)
{
//MessageBox.Show(currentCol.ElementAtOrDefault(i).ToString() + " " + currentRow.ElementAtOrDefault(i).ToString());
updateRow[0][currentCol.ElementAtOrDefault(i)] = currentRow.ElementAtOrDefault(i);
}
Как только она попадает в цикл for, я выбрасываю "индекс" вышел изграницы массива "ошибка.
Как я уже сказал, currentCol содержит имена столбцов, а currentRow - это значение.Поэтому, когда он попадет сюда, я ожидаю, что он найдет имя столбца, а затем обновит его значением.
updateRow[0][currentCol.ElementAtOrDefault(i)] = currentRow.ElementAtOrDefault(i);
Что я делаю не так?