2016-09-09 34 views
1

我已經完成基本的foreach循環與XmlNodeList如下所示。在C#中使用Parallel.ForEach和XmlNodeList#

Sample XML File (books.xml)

XmlDocument doc = new XmlDocument(); 
doc.Load("books.xml"); 
XmlNodeList xnList = doc.SelectNodes("catalog/book"); 
foreach (XmlNode node in xnList) 
{ 
    Console.WriteLine(node["author"].InnerText); 
} 

如何轉換這個循環爲Parallel.ForEach

我試過這個代碼,但它沒有奏效。

Parallel.ForEach(xnList, (XmlNode node) => 
{ 
    Console.WriteLine(node["author"].InnerText); 
}); 

這是說錯誤2

參數1:不能轉換從System.Xml.XmlNodeListSystem.Collections.Generic.IEnumerable<System.Xml.XmlNode>

回答

5

XmlNodeList實現非通用IEnumerable。你需要爲了與IEnumerable<XmlNode>上班第一投它,因爲這是Parallel.ForEach上運行:

Parallel.ForEach(xnList.Cast<XmlNode>(), (XmlNode node) => 
{ 
    Console.WriteLine(node["author"].InnerText); 
}); 
+0

爲什麼它不無科協工作? – Elshan

+1

@devopsEMK因爲'Parallel.ForEach'可以使用'IEnumerable ',而不是'IEnumerable'。 –