如何将 SqlDataReader 的值存储在列表 <class> 中?

How to store value of SqlDataReader in a list<class>?

您好,我有一个 returns 列出的方法,但我得到了不想要的结果,请告诉我下面的代码有什么问题。

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); 
}

Blog 已在您的 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); 
}

如果解决了您的问题,请将其标记为您接受的答案。