不可发音的Hashtable.keys成员不能用作方法

时间:2018-11-05 04:31:01

标签: c# hashtable

我正在用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();

1 个答案:

答案 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]);
}