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

时间:2016-07-29 05:23:27

标签: c# ado.net sqldatareader

您好我有一个方法可以返回列表但是我得到了不理想的结果,请让我知道下面的代码有什么问题。

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 个答案:

答案 0 :(得分:2)

已宣布博客&amp;在您的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); 
}

如果它能解决您的问题,请将此标记为您接受的答案。