我正在用c#创建一个小的Windows应用程序,并使用HASHTABLES,当我想在受约束的过程中添加值时遇到了此错误。 错误: “不能将不可发音的Hashtable.keys成员用作方法”
hs.keys(n)之后出现错误
这是我正在编写的代码:
public int EscribirBackup(string nombre, Hashtable hs)
{
SqlCommand cm = new SqlCommand();
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = nombre;
for (var n = 0; n <= hs.Values.Count - 1; n++)
cm.Parameters.AddWithValue(hs.Keys(n), hs.Values);
cm.Connection = ABRIR("NORMAL");
int i = cm.ExecuteNonQuery();
CERRAR();
return i;
}
现在,当我运行程序时出现此错误:
'There is no assignment of object type System.Collections.Hashtable + ValueCollection to a native type of a known managed provider.'
关于int i = cm.ExecuteNonQuery();
答案 0 :(得分:2)
Hashtable.Keys
是具有以下定义的集合属性(System.Collections
的成员):
public virtual System.Collections.ICollection Keys { get; }
请注意,ICollection
属性不会公开索引器,您应该将其转换为其他公开索引器的集合。
因此,您应该首先使用List
将其转换为数组或Cast<string>()
实例,然后使用方括号访问指定的索引,如下例所示:
var keys = hs.Keys.Cast<string>().ToArray();
var values = hs.Values.Cast<string>().ToArray();
for (var n = 0; n <= hs.Values.Count - 1; n++)
{
cm.Parameters.AddWithValue(keys[n], values[n]);
}