将XmlNodeList转换为List <string> </string>

时间:2014-02-19 05:32:03

标签: c# xml string

是否可以将XmlNodeList转换为List?没有声明新的列表 我正在寻找一个简单的实现:

System.Xml.XmlNodeList membersIdList = xmlDoc.SelectNodes("//SqlCheckBoxList/value");
    List<string> memberNames = new List<string>();
    foreach (System.Xml.XmlNode item in membersIdList)
    {
        memberNames.Add(library.GetMemberName(int.Parse(item.InnerText)));
    }

2 个答案:

答案 0 :(得分:28)

是的,可以使用LINQ:

var memberNames = membersIdList.Cast<XmlNode>()
                               .Select(node => node.InnerText)
                               .Select(value => int.Parse(value))
                               .Select(id => library.GetMemberName(id))
                               .ToList();

Cast<XmlNode>()调用是必要的,因为XmlNodeList未实现通用IEnumerable<T>,因此您必须将其显式转换为非通用IEnumerable的泛型集合。

是的,如果您愿意,可以将所有Select个调用合并为一个:

var memberNames = membersIdList.Cast<XmlNode>()
                               .Select(x => library.GetMemberName(int.Parse(x.InnerText)))
                               .ToList();

答案 1 :(得分:1)

为什么不使用LINQ to XML

List<string> memberNames = XDocument.Load("path")
                           .XPathSelectElements("//SqlCheckBoxList/value")
                           .Select(x => library.GetMemberName((int)x))
                           .ToList();