2016-07-29 34 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 :-) –

相關問題