将 XmlNodeList 转换为 List<string> [英] Converting XmlNodeList to List&lt;string&gt;

查看:62
本文介绍了将 XmlNodeList 转换为 List<string>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在不声明新的List的情况下将XmlNodeList转换为List?

Is it possible to convert an XmlNodeList to a List<string> without declaring a new List<string>?

我正在为此寻找一个简单的实现:

I am looking for a simple implementation for this:

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:

Yes, it's possible using LINQ:

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

Cast() 调用是必要的,因为XmlNodeList 没有实现通用的IEnumerable,所以你必须明确将其从非泛型 IEnumerable 转换为泛型集合.

Cast<XmlNode>() call is necessary, because XmlNodeList does not implement generic IEnumerable<T>, so you have to explicitly convert it to generic collection from non-generic IEnumerable.

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

And yes, you can merge all Select calls into one if you want:

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

这篇关于将 XmlNodeList 转换为 List<string>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆