2016-07-29 60 views
0

嗨我有一个方法返回列表,但我得到了不想要的结果,请让我知道在下面的代码中出了什么问题。如何将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

什么是不良结果?错误讯息这是什么?错误的结果?它是什么 ?空的清单?特定列中的数据错误。请更新您的答案并具体说明。 – user3185569

+0

博客表有4个不同的记录,在reader.read()后,博客列表包含4次相同的记录,而不是4个不同的记录。 –

回答

2

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

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

+1

他首先以纯文本形式发布代码,这就是部分以某种方式被删除的原因。 – user3185569

+0

感谢user3185569,那消除了那部分。 –

+0

非常感谢Michael :-) –

相关问题