我正在开发一个C#VS2008/SQL Server网站应用程序,并且是Dictionary类的新手.你能告诉你最好的方法吗?这是一段代码:
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; }
但这给了我编译器错误:
The best overloaded method match for 'System.Collections.Generic.Dictionary.this[string]' has some invalid arguments
我只想从"dic"访问每个值并加载到这些SQL参数中.我该怎么做呢?我必须输入密钥吗?键被命名为"col1","col2"等,因此不是最方便用户的.还有其他提示吗?谢谢!
甲Dictionary
一种类型的地图对象转换成另一种类型的对象.在你的情况下,你有一个Dictionary
.所以,如果你有这样的初始化:
Dictionarydic = new Dictionary () { { "key1", "value1" }, { "key2", "value2" }, { "key3", "value3" } };
你可以key2
通过这样做获得价值
dic["key2"]; // gives "value2"
它Dictionary
是强类型的,所以不需要任何铸造.正如Jon Skeet所说,你List
在这里可能会更好.您可以通过整数索引访问它们.
你似乎在试图访问一个Dictionary
由整数索引.你不能这样做 - 你必须通过键查找值,这是一个字符串.
如果您不想使用字符串键,为什么要使用a Dictionary
开头?你能用一个List
还是一个Dictionary
?
需要注意的是,一旦你已经成功地正确使用索引,你将不再需要转换为字符串.