Если вы посмотрите на свой код, у вас есть пара вещей. Первый загружает коллекцию для узлов электронной почты, а второй фактически делает с ними что-то значимое.
Во-первых, вы хотите, чтобы ваша функция возвращала коллекцию. Что-то вроде (и я на моем Mac, так что это может не работать):
List<string> EmailAddresses(string xml)
{
XmlDocument xdoc = new XmlDocument();
XmlNodeList nodeList;
String emailList = string.Empty;
xdoc.LoadXml(xml);
nodeList = xdoc.SelectNodes("//EmailList");
foreach (XmlNode item in nodeList)
{
foreach (XmlNode email in item)
{
yield email.InnerText.ToString();
}
}
}
Теперь возникает вопрос, что вы хотите делать с этой коллекцией. В приведенном выше примере вы объединяли его или в основном хранили состояние.
С точки зрения C # вы можете начать использовать такие вещи, как ответы из этого вопроса (с использованием LINQ) и этого .
С точки зрения F # у вас теперь есть список, и вы можете просто использовать обычные процедуры для списка, такие как этот или здесь .
Вы также можете посмотреть LINQ to XML (или 5-минутный обзор ), чтобы получить больше идей.