Is there an easy way to compare if 2 XDocuments are equal ignoring element/attribute order?

Davy8 picture Davy8 · May 18, 2009 · Viewed 10.5k times · Source

Unit testing my serialization code I found one failed because I had attributes listed in a different order (I'm just comparing the XDocument.ToString() values) and while I could fix that, it really doesn't matter to me in what order the elements or attributes appear as long as they're all there with the right name at the right level of hierarchy. I could probably write a method do this, but I'm wondering if there's an easy built in way I'm not aware of.

Answer

XNode has a DeepEquals function that should do the trick.

http://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals.aspx

Update:

It appears that the DeepEquals function doesn't always work correctly. You may be best off implementing your own comparison routine.

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=400469