Как мне решить, что индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Ошибка
Я получаю следующие исключения в своем коде
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
Я не мог понять, почему он бросает это исключение.
Поток программы выглядит примерно так :
У меня есть коллекция чисел, скажем, от 1 до 200.
для каждого номера в коллекциях он идет и запускает приведенный ниже код. до 120 года он не бросал исключения, но для 121 года он бросал исключение.
и это происходит случайным образом, если запустить программу снова, я могу получить такое же исключение для 123.
В чем может быть причина? Это что-то связано с подключением к базе данных? Есть ли какие-то проблемы в моем коде? если это так, то не следует ли его выбрасывать на первой итерации? Я ничего не понимал. Пожалуйста, помогите мне.
Что я уже пробовал:
public DataTable GetGrade(DataTable dtReportTbl) { dtReportTbl.Columns.Add("Salary_Grade", typeof(System.String)); dtReportTbl.Columns.Add("InsertedDate", typeof(DateTime)); string query = "select Grade from student_grade where myTable in ('JMS','JSM') and student_Num in ({StudentNums}) order by student_Num"; try { using (OracleConnection con = new OracleConnection(connectionString)) { List<string> storeNums = new List<string>(); foreach (DataRow row in dtReportTbl.Rows) { storeNums.Add(row["store"].ToString()); } var cmd = new OracleCommand(query, con); // extension method to get StudentNums as to achieve cmd.Parameters.Add(new OracleParameter("pStudentNums", studentNum) cmd.AddArrayParametersOra(storeNums, "StudentNums"); var rdr = cmd.ExecuteReader(); List<string> salGradelist = new List<string>(); while (rdr.Read()) { salGradelist.Add(rdr["Grade"].ToString()); } int i = 0; foreach (DataRow row in dtReportTbl.Rows) { row["Grade"] = salGradelist[i]; row["RecordInsertedDate"] = DateTime.Today; i++; } } } catch (Exception ex) { throw; } return dtReportTbl; }