XDocument.Descendants() versus DescendantNodes()
c#, linq-to-xml, xml
Solution
Descendants returns only elements. DescendantNodes returns all nodes (including XComments, XText, XDocumentType etc).
Consider following xml to see the difference:
<root>
<!-- comment -->
<foo>
<bar value="42"/>Oops!
</foo>
</root>
`Descendants` will return 3 elements (`root`, `foo`, `bar`). `DescendantNodes` will return these three elements, and 2 other nodes - text and comment.
Problem
I've looked at Nodes() vs DescendantNodes() usages? to see the difference between `.Nodes()` and `.DescendantNodes()` but what is the difference between: XDocument.Descendants() and XDocument.DescendantNodes()? ``` var xmlDoc = XDocument.Load(@"c:\Projects\Fun\LINQ\LINQ\App.config"); var descendants = xmlDoc.Descendants(); var descendantNodes = xmlDoc.DescendantNodes(); foreach (var d in descendants) Console.WriteLine(d); foreach (var d in descendantNodes) Console.WriteLine(d); ```