Заполнение списка 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) {}
}