在foreach循环后收集字符串

时间:2015-06-22 09:02:12

标签: c# xml foreach

是否可以在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是否正确?还是其他更好的建议?

3 个答案:

答案 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();