我有一个字典类型变量,我保持"字符串"键入键和"列表"类型值。
问题是,在循环的情况下,所有先前的值都被最后一个值替换。
为什么会这样?
List<IWebElement> indicationsElement = ReturnIndicationList();
drugsDB = new List<string>();
for (int i = 0; i < indicationsElement.Count;i++ )
{
string key = indicationsElement[i].Text.ToString();
dt = ZittarPatt.getDrugsByIndication(ClientName, key);
drugsDB.Clear();
for (int k = 0; k < dt.Rows.Count; k++)
{
drugsDB.Add(dt.Rows[k].ItemArray[3].ToString().Trim());
}
drugsByindicationDictionary.Add(key, drugsDB);
}
答案 0 :(得分:2)
您每次迭代都会添加相同的引用,而不是添加List<string>
的新实例。
每次使用.Clear
时,它都会清除drugsByindicationDictionary
处已经是相同条目的所有条目
因此,只会保存drugsDB
的最后一个添加内容。 (最后使用.Clear
)
您应该执行以下代码:
List<IWebElement> indicationsElement = ReturnIndicationList();
for (int i = 0; i < indicationsElement.Count;i++ )
{
string key = indicationsElement[i].Text.ToString();
dt = ZittarPatt.getDrugsByIndication(ClientName, key);
var drugsDB = new List<string>();
for (int k = 0; k < dt.Rows.Count; k++)
{
drugsDB.Add(dt.Rows[k].ItemArray[3].ToString().Trim());
}
drugsByindicationDictionary.Add(key, drugsDB);
}
答案 1 :(得分:0)
将drugsDB.Clear();
更改为 drugsDB = new List<string>();