Как сохранить значение 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);
}
Пожалуйста, отметьте это как ваш принятый ответ, если он решит вашу проблему.