C#Hashtable存储DataSet

时间:2013-08-02 13:01:09

标签: c# hashtable

我试图弄清楚如何使用哈希表来存储和检索DataSet。

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

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

我应该补充说前两行代码通过,它在第三行崩溃。

2 个答案:

答案 0 :(得分:2)

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

foreach (DataSet ds in myHash.Values)

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

...但我强烈建议您转而使用通用集合。

答案 1 :(得分:1)

试试这个

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

词典会将keyvalue保留为DictionaryEntry结构的形式,因此您无法从DictionaryEntry投射到DataSet实际上您的数据集是a添加到Hashtable的值,因此它将位于DictionaryEntry.Value属性

修改正如评论中所述,DirectCast是合适的