2015-06-22 62 views
0

是否有可能在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

只需在循环中调用'col.Add(skillsName)'? –

回答

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); 
} 
2

您也可以直接创建使用LINQ

var list = 
SkillXML.GetElementsByTagName("name") 
.Cast<XmlNode>() 
.Select(n => n.Attributes["value"].Value) 
.ToList(); 
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();