Заполнение списка List экземплярами string[] - C#
Формулировка задачи:
Добрый день.
Читаю данные с SQL-запроса и хочу заполнить список podr массивами string[] line.
После того как добавляю line в podr, если обратиться к любому индексу podr, возвращается только последние значение podr.
В результате System.Diagnostics.Debug.WriteLine выводит только последние значения line_temp, записанные при последнем проходе цикла (даже если обращаюсь к 0 индексу списка podr). И в результате весь список podr заполнен только последним значением массива line[].
Что делаю не так?
{ int Column = 6;//число столбцов в запросе string[] line = new string[Column]; //Column полей из результата запроса string[] line_temp = new string[Column]; //временный массив для наглядности List<string[]> podr = new List<string[]>(); //в каждую строку этого списка будет писаться string[] line try { SqlConnection cn = new SqlConnection(); cn.ConnectionString= @"Data Source=namepc;Initial Catalog=test;User ID=appuser;Password=password;Pooling=False"; SqlDataReader myReader = null; cn.Open(); SqlCommand myCommand = new SqlCommand("select * from stru where Code LIKE '01__' AND DateEnd IS NULL ", cn); myReader = myCommand.ExecuteReader(); int i = 0; while (myReader.Read()) { line[0]=myReader["ID"].ToString(); line[1] = myReader["IDOwner"].ToString(); line[2] = myReader["Name"].ToString(); line[3] = myReader["Caption"].ToString(); line[4] = myReader["Initials"].ToString(); line[5] = myReader["Code"].ToString(); podr.Insert(i,line); //поместил в i-строку списка podr массив line состоящий из Column строк line_temp = podr[i]; //считываю в line_temp массив string[], расположенный в списке podr с индексом i System.Diagnostics.Debug.WriteLine("podr[{0}]="+line_temp[2], i); //вывожу 2 столбец Name //теперь считываю то, что должно было записаться в podr при первом проходе цикла while line_temp =podr[0]; System.Diagnostics.Debug.WriteLine("podr[0]="+line_temp[2]); i++; } } catch (Exception ex) {} }
Решение задачи: «Заполнение списка List экземплярами string[]»
textual
Листинг программы
{ int Column = 6;//число столбцов в запросе List<string[]> podr = new List<string[]>(); //в каждую строку этого списка будет писаться string[] line try { SqlConnection cn = new SqlConnection(); cn.ConnectionString= @"Data Source=namepc;Initial Catalog=test;User ID=appuser;Password=password;Pooling=False"; SqlDataReader myReader = null; cn.Open(); SqlCommand myCommand = new SqlCommand("select * from stru where Code LIKE '01__' AND DateEnd IS NULL ", cn); myReader = myCommand.ExecuteReader(); int i = 0; while (myReader.Read()) { string[] line = new string[Column]; //Column полей из результата запроса line[0]=myReader["ID"].ToString(); line[1] = myReader["IDOwner"].ToString(); line[2] = myReader["Name"].ToString(); line[3] = myReader["Caption"].ToString(); line[4] = myReader["Initials"].ToString(); line[5] = myReader["Code"].ToString(); podr.Insert(i,line); //поместил в i-строку списка podr массив line состоящий из Column строк System.Diagnostics.Debug.WriteLine("podr[{0}]="+podr[i][2],i); //вывожу 2 столбец Name System.Diagnostics.Debug.WriteLine("podr[0]=" + podr[0][2]); //вывожу 2 столбец Name при первом прохождении цикла i++; } } catch (Exception ex) {} }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д