如何遍历具有列表值的哈希表?
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
}
}
我希望我的散列中的单个键有多个值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
}
}