如何遍历具有列表值的哈希表?

How to iterate through Hashtable that has values as List?

我希望我的散列中的单个键有多个值table,所以我将键值对创建为

Hashtable A = new Hashtable(StringComparer.InvariantCultureIgnoreCase);

List<string> DataList = new List<string>();
DataList.Add(userName);
DataList.Add(firstName);
DataList.Add(lastName);
DataList.Add(Pwd);

if (!A.ContainsKey(ID))
{ 
    A.Add(ID, DataList);
}

例如,我的散列table 包含的值为

Hashtable A -> Key : 1 , Value : {'A','B','1234','@red'}

Hashtable B -> Key : 2, Value : {'Emma','B','111','@blue'}

我有两个散列table,我想使用密钥比较日期。如果键在两个 table 中都存在,那么我希望在两个 table 中比较该键的值。如果有变化,我就输出。

例如,如果 ID-1001 同时出现在 A 和 B 中,那么我会检查 table 中的值列表以查找 1001。例如,如果 A 的第三个值为“1234”,B 的第三个值为“111”,那么我输出 111.

它只是哈希的比较table,但我坚持迭代这些值。

foreach(DictionaryEntry details in A)
{
    if(details.Key.Equals(Key of Hashtable B))
    {
        //I want to do something like this if both Hashtables have same key
        string firstname = 'A';
        string lastname = 'B';
        string password ='1234' and so on...
        // I just wish to store the values of first hashtable in some variables so that I can use them further.
    }
}

我尝试使用 foreach 但它给了我错误

Foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'

如何解析哈希中的值列表table?

根据您的评论和问题,我了解到您想要迭代这些值并对其进行处理。你不能的原因是因为 HashTable 是一个 non-generic 集合,所以你所有的值都存储为 object 类型,因此会出错。要解决此问题,您需要 type-cast 您收到的 List<string>:

foreach(DictionaryEntry details in A)
{
    if(B.ContainsKey(details.Key))
    {
        List<string> data = B[details.Key] as List<string>;
        // Do the thing here
    }
}