是否可以将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)));
}
答案 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();