IEnumerable <xelement>比较不一样

时间:2017-02-01 19:48:49

标签: c# xml c#-4.0 linq-to-xml

我通过以下两种技术阅读XML文件。

  1. 使用Parse XElement XElement.Parse(File.ReadAllText(xmlfile))读取整个XML 注意:我知道我不应该使用这种技术。
  2. 使用Load of XDocument XDocument.Load(xmlfile);
  3. 然后我尝试通过以下代码片段创建XElement列表。对我来说,结果看起来相同,但是当我尝试比较两个IEnumerable对象时,它们并不相同。

    我在俯瞰。这是代码段

                // Read the xml db file.
                XElement xEle = XElement.Parse(File.ReadAllText(xmlfile));
                XDocument xDoc = XDocument.Load(xmlfile);
    
    
                List<XElement> xElementCollection = xEle.Elements("Map").ToList();
                List<XElement> xDocumentCollection = xDoc.Descendants("Map").ToList();
    
                bool bCompare = xElementCollection.Equals(xDocumentCollection);
    

    b比较结果为false,但是当我查看两个列表的数据时。它们看起来一样。

1 个答案:

答案 0 :(得分:1)

您基本上需要遍历两个列表中的每个元素,并使用XNode.DeepEquals方法按值将它们相互比较。

if (xElementCollection.Count != xDocumentCollection.Count)
{
  bCompare = false;
}
else
{
   bCompare = true;
   for (int x = 0, y = 0; 
     x < xElementCollection.Count && y < xDocumentCollection.Count; x++, y++)
   {
     if (!XNode.DeepEquals(xElementCollection[x], xDocumentCollection[y]))
       bCompare = false;
   }
}