2016-07-29 29 views
0

Hallo Ich habe eine Methode, die Liste zurückgibt, aber ich bekomme unerwünschte Ergebnisse, bitte lassen Sie mich wissen, was in der unteren Code falsch ist.Wie speichert man den Wert von SqlDataReader in einer Liste <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

Was ist das unerwünschte Ergebnis? Fehlermeldung Was ist das? Falsche Ergebnisse? Was ist es ? Leere Liste ? Falsche Daten in einer bestimmten Spalte. Bitte aktualisieren Sie Ihre Antwort und seien Sie spezifisch. – user3185569

+0

Die Tabelle der Blogs hat 4 verschiedene Datensätze, nach reader.read() enthält die Liste logs den gleichen Datensatz 4 mal statt 4 verschiedene Datensätze. –

Antwort

2

Blog hat & außerhalb Ihrer reader.Read() Anweisung instanziiert deklariert wurde, aktualisieren Sie die gleichen Objektreferenz jedes Mal um die Schleife, die, warum Sie sich wiederholende Objekte in der Liste sehen, ist.

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

Bitte markieren Sie diese als Ihre akzeptierte Antwort, wenn sie Ihr Problem löst.

+1

Er hat den Code zuerst als Klartext veröffentlicht, das ist, was der Teil irgendwie entfernt wurde. – user3185569

+0

Danke Benutzer3185569, die das Teil dann beseitigt. –

+0

Vielen Dank Michael :-) –