我试图弄清楚如何使用哈希表来存储和检索DataSet。
这是我尝试过的,但是当我尝试它时,我得到了无效的强制转换异常。另外,我如何循环遍历该哈希并获取密钥以及数据集
Hashtable myHash = new Hashtable();
myHash.Add("1", someDataSet);
foreach (DataSet ds in myHash)
{
lblMessage.Text = lblMessage.Text + " - Hash ID + ds[0].TableName";
}
我应该补充说前两行代码通过,它在第三行崩溃。
答案 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";
}
词典会将key
和value
保留为DictionaryEntry
结构的形式,因此您无法从DictionaryEntry
投射到DataSet
实际上您的数据集是a添加到Hashtable的值,因此它将位于DictionaryEntry.Value
属性
修改正如评论中所述,DirectCast是合适的