Как сохранить значение SqlDataReader в списке<class>?

Привет у меня есть метод, который возвращает список, но я получаю нежелательные результаты, пожалуйста, дайте мне знать, что не так в приведенном ниже коде.

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
   blog.Id = Convert.ToInt16(reader["id"]); 
   blog.email = reader["email"].ToString(); 
   blog.description = reader["description"].ToString(); 
   blog.date =Convert.ToDateTime(reader["date"]); 
   blogslist.Add(blog); 
}

1 ответ

Решение

Блог был объявлен и создан вне вашего оператора reader.Read(), вы обновляете одну и ту же ссылку на объект каждый раз вокруг цикла, поэтому вы видите повторяющиеся объекты в вашем списке.

cmd2.CommandText = "select * from Blogs order by id desc"; 
SqlDataReader reader = cmd2.ExecuteReader(); 
List<Blogs> blogslist = new List<Blogs>(); 
while (reader.Read()) 
{ 
   var blog = new Blogs();
   blog.Id = Convert.ToInt16(reader["id"]); 
   blog.email = reader["email"].ToString(); 
   blog.description = reader["description"].ToString(); 
   blog.date =Convert.ToDateTime(reader["date"]); 
   blogslist.Add(blog); 
}

Пожалуйста, отметьте это как ваш принятый ответ, если он решит вашу проблему.

Другие вопросы по тегам