2015-06-22 66 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();