【发布时间】:2015-08-20 08:38:28
【问题描述】:
我只是想知道是否可以更改哈希表的键?如果是这样,我该怎么做?
这是我通过这样做得到的哈希表的键:
var param = selectedGroup.Parameters.Keys;
所以我想要做的基本上只是改变密钥。
selectedGroup.Parameters.Keys[i].Value = newKey;
我该怎么做?
我想我必须以某种方式移动属于该键的所有值。
我试图像这样制作一个新的哈希表
var parameters = new Tacton.Configurator.ObjectModel.SequencedHashtable<Tacton.Configurator.ObjectModel.Parameter>();
for (int i = 1; i < selectedGroup.Parameters.Count + 1; i++)
{
var para = result.Xml.SelectNodes("/session/view/parameters/param[" + i + "]/field")[0].InnerText + result.Xml.SelectNodes("/session/view/parameters/param[" + i + "]/desc-frags/frag[2]/@name")[0].Value;
var param = selectedGroup.Parameters[i];
parameters.Add(para, param);
}
然后我收到以下错误:
Unable to cast object of type 'Named`1[Tacton.Configurator.ObjectModel.Parameter,Tacton.Configurator.ObjectModel.Parameter]' to type 'Tacton.Configurator.ObjectModel.Parameter'.
我基本上想要与 selectedGroup.Parameters 相同的哈希表,但我想从 handender_part_qty_multifieldITM_HANDSENDER_N002592U00U01 到 handender_part_qty_multifieldITM_HANDSENDER_N002592-00-01
这就是 selectedGroup.Parameters[i] 的样子:
【问题讨论】:
-
您要更改键还是值?
-
您想将值转移到新键吗?您能否提供一个具有预期结果的更有意义的样本(不是屏幕截图)。
-
钥匙。问题是 key 得到了错误的值。如果您查看第一个,它应该是“handsender_part_qty_multifieldITM_HANDSENDER_N002592-00-01”而不是“handsender_part_qty_multifieldITM_HANDSENDER_N00259U00U01”
-
"key 得到了错误的值" 这是什么意思?你的问题不清楚。
-
我的意思很明显,因为钥匙错了。这意味着代码中没有任何作用,因为它找不到正确的密钥。它正在寻找密钥 handsender_part_qty_multifieldITM_HANDSENDER_N002592-00-01 但密钥是 handsender_part_qty_multifieldITM_HANDSENDER_N002592U00U01 所以它找不到它,因此系统无法工作