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)));
}
はい、LINQを使用して可能です。
_var memberNames = membersIdList.Cast<XmlNode>()
.Select(node => node.InnerText)
.Select(value => int.Parse(value))
.Select(id => library.GetMemberName(id))
.ToList();
_
XmlNodeList
はジェネリック_IEnumerable<T>
_を実装していないため、Cast<XmlNode>()
呼び出しが必要です。そのため、ジェネリック以外のIEnumerable
からジェネリックコレクションに明示的に変換する必要があります。
そして、はい、必要に応じて、すべてのSelect
呼び出しを1つにマージできます。
_var memberNames = membersIdList.Cast<XmlNode>()
.Select(x => library.GetMemberName(int.Parse(x.InnerText)))
.ToList();
_
LINQ to XML
を使用しないのはなぜですか?
List<string> memberNames = XDocument.Load("path")
.XPathSelectElements("//SqlCheckBoxList/value")
.Select(x => library.GetMemberName((int)x))
.ToList();