从列表中创建字典

本文关键字:字典 创建 列表 | 更新日期: 2023-09-27 18:15:18

我想从嵌套列表的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时,它清除了我已经作为列表添加值的字典的值。

请建议避免使用

从列表中创建字典

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

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

  ObjList.Clear();

 ObjList = new List ...

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

您想要通过写入new List<string>()为每个迭代创建一个不同的实例。

您可以替换:

ObjParentDiction.Add(Attr, ObjList);

:

ObjParentDiction.Add(Attr, ObjList.ToList());
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.