Заполнение списка 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) {}
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д