Wie erhalte ich Zugriff auf Dictionary-Elemente?
Ich bin die Entwicklung einer C#, VS2008 /SQL-Server-website, app und bin neu in der Dictionary-Klasse. Können Sie bitte beraten über beste Methode, dies zu erreichen? Hier ist ein code-snippet:
SqlConnection conn2 = new SqlConnection(connString);
SqlCommand cmd = conn2.CreateCommand();
cmd.CommandText = "dbo.AppendDataCT";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn2;
SqlParameter p1, p2, p3;
foreach (string s in dt.Rows[1].ItemArray)
{
DataRow dr = dt.Rows[1]; //second row
p1 = cmd.Parameters.AddWithValue((string)dic[0], (string)dr[0]);
p1.SqlDbType = SqlDbType.VarChar;
p2 = cmd.Parameters.AddWithValue((string)dic[1], (string)dr[1]);
p2.SqlDbType = SqlDbType.VarChar;
p3 = cmd.Parameters.AddWithValue((string)dic[2], (string)dr[2]);
p3.SqlDbType = SqlDbType.VarChar;
}
aber das ist mir compiler-Fehler:
The best overloaded method match for 'System.Collections.Generic.Dictionary<string,string>.this[string]' has some invalid arguments
Ich will einfach nur, um den Zugang zu jedem Wert von "dic", und laden Sie in diese SQL-Parameter. Wie mache ich das? Muss ich den key eingeben? Die Schlüssel mit den Namen "col1", "col2", ... etc., also nicht die meisten Benutzer freundlich. Irgendwelche anderen Tipps? Danke!
- dies ist eine doppelte, Sie aufgefordert, diese zweimal.
- möglich, Duplikat der Wie übergeben Sie eine Dictionary-variable einer anderen Prozedur
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheinen Sie zu versuchen, auf eine
Dictionary<string, string>
durch integer index. Sie können das nicht - Sie haben zu suchen Sie nach dem Wert der Schlüssel ist ein string.Wenn Sie nicht möchten, dass die Verwendung von string-Schlüssel, warum sind Sie mit einem
Dictionary<string, string>
mit zu beginnen? Könnte Sie entweder eineList<string>
oder eineDictionary<int, string>
?Beachten Sie, dass sobald Sie haben gelang verwenden Sie den indexer entsprechend, werden Sie nicht brauchen, um casten zu einem string.
Einen
Dictionary
Karten-Objekte eines Typs in Objekte eines anderen Typs. In Ihrem Fall haben Sie eineDictionary<string, string>
. Also, wenn Sie hatte es initialisiert wie diese:Würden Sie, um den Wert für
key2
by doingDen
Dictionary
ist stark typisiert, so gibt es keine Notwendigkeit, Sie zu Gießen. Wie Jon Skeet sagt, können Sie besser dran mit einemList<string>
hier. Sie können Zugriff auf diese durch den ganzzahligen index.Hier ist ein Stück code, das tun, was Sie wollen, ich denke.. Man wird hinzufügen müssen, um in eine else-Anweisung, aber es sollte Ihnen den Einstieg.
Wenn Ihr Schlüssel "col1", "col2", etc, dann mit 0, 1, usw verursacht die Fehler, die Sie bekommen. Versuchen Sie dies:
Auch, es gibt keine Notwendigkeit zu werfen, um
string
als das dictionary-Objekt wird zurückgegeben, Zeichenfolgen bereits.Kann ich nicht verstehen, was Sie wirklich suchen, also hier mein kleiner Rat.
Es ist ein Weg, zu durchsuchen Wörterbuch nicht um Elemente per Schlüssel. Es ist eine foreach-option.
Ja Werte zugegriffen werden muss, indem die Schlüssel.