Irgendwie machst Du seltsame Sachen! 1. if(reader.HasRows()) kannst Du Dir sparen - da dies via while(reader.Read()) eh schon gefiltert wird. (Der macht das ja nur wenn auch Zeilen da sind)
2. Du fügst Tmp jedes Mal "id" und die ID aus dem Reader hinzu - aber immer nur ein Wert? Dafür brauchste ja gar keine Hashtable!!!! Da kannste auch einfach: Int Id = reader["IdFeldXYZ"]); Machen!! Cat fügst Du dann die Hashtable (mit nur einem Wert - nämlich der ID hinzu) Dann killst Du Tmp wieder (leerst das quasi) - so kann immer nur 1 Wert drin stehen - zumal der eh meckern würde wenn du mehrere Werte rein schreibst - da der Key ja auch immer "id" heißt. Die Kurzfassung dazu wäre eigentlich! Hashtable Cat = new Hashtable(); int c=0; while(reader.Read()) { int id = Convert.ToInt32(reader["IdFeldXYZ"]); Cat.Add(c, id); c++; } Das wäre jetzt genau das selbe! for(int i=0; i<Cat.Count; i++) { Response.Write(Cat[i]); } Falls in dem Reader mehr Daten - als die ID liegen - könntest Du darüber nachdenken statt dem Integer "id" ein eigenes Objekt zu definieren. ZB: Class NaviObject Public int id; Public string link; Public string name; ... End Class Dann kannste das so befüllen: while(reader.Read()) { NaviObject NO = new NaviObject(); NO.id = Convert.ToInt32(reader["IdFeldXYZ"]); NO.link = Convert.ToString(reader["LinkFeld"]); NO.name = Convert.ToString(reader["NameFeld"]); Cat.Add(c, NO); c++; } Das wäre dann recht sinnvoll - da das ganze schön typsicher ist. Hoffe das hat irgendwie geholfen. Mit freundlichen Grüßen Andreas -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt Gesendet: Dienstag, 8. Februar 2005 13:39 An: csharp.net@glengamoi.com Betreff: AW: [CSharp.net] Mehrdimensionale Collection Jetzt hab ich's so gemacht: Hashtable Cat = new Hashtable(); Hashtable Tmp = new Hashtable(); int c=0; if(reader.HasRows) { while(reader.Read()) { Tmp.Add("id", reader["IdFeldXYZ"]); Cat.Add(c, Tmp); Tmp.Clear(); c++; } } reader.Close(); for(int i=0; i<Cat.Count; i++) { Hashtable Navi = (Hashtable) Cat[i]; Response.Write(Navi["id"]); } Praktisch, aber irgendwie noch nicht befriedigend. Gruß, Thomas http://blogs.dotnetgerman.com/thomas/ > -----Ursprüngliche Nachricht----- > Von: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Im Auftrag von Thomas Bandt > Gesendet: Dienstag, 8. Februar 2005 13:23 > An: csharp.net@glengamoi.com > Betreff: [CSharp.net] Mehrdimensionale Collection > > Hi, > > lese mit deinem DataReader Daten aus und müsste in > dieser Schleife weitere Abfragen machen - was ja aber > nicht geht. Jetzt habe ich mir grad sowas gebaut: > > Hashtable Cat = new Hashtable(); > > int c=0; > > if(reader.HasRows) { > while(reader.Read()) { > Cat.Add(string.Format("{0}_0",c), reader[0]); > Cat.Add(string.Format("{0}_1",c), reader[1]); > Cat.Add(string.Format("{0}_2",c), reader[2]); > Cat.Add(string.Format("{0}_3",c), reader[3]); > Cat.Add(string.Format("{0}_4",c), reader[4]); > c++; > } > } > > Was gibt's denn noch für Alternativen dafür? > > Gruß, Thomas > > http://blogs.dotnetgerman.com/thomas/ > > > _______________________________________________ > CSharp.net Mailingliste, Postings senden an: > CSharp.net@glengamoi.com > An-/Abmeldung und Suchfunktion unter: > http://www.glengamoi.com/mailman/listinfo/csharp.net > > _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net