0

我想从嵌套列表的 xml 文件中准备一个字典,因为一个键有多个值。下面我为此使用的代码 -

  for (int i = 0; i < NumberOfVariation; i++)
    {
        SingleVariationDom.LoadXml(VariationSet[i].OuterXml);
        XmlNodeList CASInputParam = SingleVariationDom.GetElementsByTagName("CASInputParam");
        string Attr = null;
         ObjList.Clear();
        for (int j = 0; j < CASInputParam.Count; j++)
        {
            if (j == 0)
            {
                var NonTabularValueElement = SingleVariationDom.GetElementsByTagName("CASInputParam")[0];
                Attr = NonTabularValueElement.Attributes["MailParam"].Value;
            }
            else
            {
                var NonTabularValueElement = SingleVariationDom.GetElementsByTagName("CASInputParam")[j];
                string Attribut = NonTabularValueElement.Attributes["MailParam"].Value;
                ObjList.Add(Attribut);
            }
        }

        ObjParentDiction.Add(Attr, ObjList);

    }

当我清除列表对象时,ObjList它会清除我已经将值添加为列表的字典的值。

请建议避免它。

4

4 回答 4

3

当我清除列表对象 ObjList 时,它会清除我已经将值添加为列表的字典的值。

这是因为您不断添加相同的实例。代替

  ObjList.Clear();

 ObjList = new List ...

解决问题。

于 2013-05-26T11:22:08.823 回答
2

ObjList在循环的每次迭代中都是相同的列表。

您想通过编写为每次迭代创建不同的实例new List<string>()

于 2013-05-26T11:21:09.773 回答
0
Create an instance of the list of object with
ObjList = new List() and ObjList.Clear() outside of the outerloop. 
then each time before entering the loop list of object will be cleared and 
after entering into the loop object will be repopulated again.

thanks.
于 2013-05-26T11:45:22.980 回答
0

您可以更换:

ObjParentDiction.Add(Attr, ObjList);

至:

ObjParentDiction.Add(Attr, ObjList.ToList());
于 2013-05-26T11:22:34.037 回答