Заполнение списка List экземплярами string[] - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Читаю данные с SQL-запроса и хочу заполнить список podr массивами string[] line. После того как добавляю line в podr, если обратиться к любому индексу podr, возвращается только последние значение podr.
{
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) {}
}
В результате System.Diagnostics.Debug.WriteLine выводит только последние значения line_temp, записанные при последнем проходе цикла (даже если обращаюсь к 0 индексу списка podr). И в результате весь список podr заполнен только последним значением массива line[]. Что делаю не так?

Решение задачи: «Заполнение списка 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) {}
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5