是否可以在foreach循环后收集字符串?例如:
StringCollection col = new StringCollection();
XmlNodeList skillNameNodeList=SkillXML.GetElementsByTagName("name");
foreach (XmlNode skillNameNode in skillNameNodeList)
{
skillsName=skillNameNode.Attributes["value"].Value;
}
col.Add(skillsName); //Return System.Collections.Specialized.StringCollection
我想收集每个skillsName并将它们放在一个集合或列表中,以便我以后可以使用它。使用StringCollection是否正确?还是其他更好的建议?
答案 0 :(得分:3)
是的,你需要在循环中进行添加。我使用List<string>
,因为它支持LINQ:
XmlNodeList skillNameNodeList=SkillXML.GetElementsByTagName("name");
List<string> skills = new List<string>();
foreach (XmlNode skillNameNode in skillNameNodeList)
{
skills.Add(skillNameNode.Attributes["value"].Value);
}
答案 1 :(得分:2)
您也可以使用LINQ直接创建列表
var list =
SkillXML.GetElementsByTagName("name")
.Cast<XmlNode>()
.Select(n => n.Attributes["value"].Value)
.ToList();
答案 2 :(得分:0)
List<string> myList = new List<string>();
XmlNodeList skillNameNodeList=SkillXML.GetElementsByTagName("name");
foreach (XmlNode skillNameNode in skillNameNodeList)
{
myList.Add(skillNameNode.Attributes["value"].Value);
}
通过linq可能有一种更简洁的方法。它将类似于下面的内容(免责声明:未经测试)。
var myList = SkillXML.GetElementsByTagName("name").Cast<XmlNode>().Select(n => n.Attributes["value"].Value).ToList();