-2

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

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

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

我可能应该添加前两行代码,它在第三行崩溃。

4

2 回答 2

2

您当前正在尝试遍历所有键/值对,但将它们转换为DataSet. 您可以轻松解决此问题:

foreach (DataSet ds in myHash.Values)

如果您实际上也想要密钥,则可以将迭代变量更改为 type DictionaryEntry,但除非您需要密钥,否则无需使用它。

...但我强烈建议您改用通用集合。

于 2013-08-02T13:07:49.693 回答
1

尝试这个

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

Dictionary 将保持keyvalue作为DictionaryEntry结构的形式,因此您不能将DictionaryEntry其转换为DataSet实际上您的数据集是添加到 Hashtable 的值,因此它将位于DictionaryEntry.Value属性中

编辑正如评论中提到的那样 DirectCast 是合适的

于 2013-08-02T13:08:45.867 回答