存储数据集的C#哈希表

本文关键字:哈希表 数据集 存储 | 更新日期: 2023-09-27 18:26:01

我正试图弄清楚如何使用哈希表存储和检索数据集。

这是我尝试过的,但当我尝试时,我得到了无效的强制转换异常。此外,我如何循环通过该哈希并获得密钥以及数据集

Hashtable myHash = new Hashtable();
myHash.Add("1", someDataSet);
foreach (DataSet ds in myHash)
{
     lblMessage.Text = lblMessage.Text + " - Hash ID + ds[0].TableName";
}

我可能应该加上前两行代码通过,第三行代码崩溃。

存储数据集的C#哈希表

您当前正在尝试遍历所有键/值对,但将它们强制转换为DataSet。你可以很容易地解决这个问题:

foreach (DataSet ds in myHash.Values)

如果您确实也需要密钥,您可以将迭代变量更改为DictionaryEntry类型,但除非您需要密钥,否则不需要使用它。

但我强烈建议您改用泛型集合。

试试这个

foreach (DictionaryEntry entry in myHash)
{
    DataSet ds = (DataSet)entry.Value;
    lblMessage.Text = lblMessage.Text + " - Hash ID + ds[0].TableName";
}

Dictionary将以DictionaryEntry结构的形式保存keyvalue,因此您不能从DictionaryEntry强制转换为DataSet。实际上,您的数据集是添加到Hashtable的Value,因此它将位于DictionaryEntry.Value属性中

编辑如评论中所述,DirectCast适合