You probably won't read this since its later in the day, but here goes. I just wrote an xml validator in linq today. This xml has multiple nested nodes. In less than 100 lines of code, I wrote a class that validates that my schema (which is arcane), that all of the numbers match up (100 in the results tag means I actually have 100 results), and counting the number of results. I did this by counting the number of semicolons. Now, you can count the number of semicolons by a loop over the character array, or
int semi = myhugestring.tochararray().where(p => p == ';').count()
You might be able to do this in less code with regular expressions, but it wouldn't be so readable. In addition, say instead of a string, I had a var of xml elements. That var would not be populated until I execute my count code. And then, it iterates over the in memory collection and gets me exactly what I want. It does not build a separate list and do a search. If your xml is huge (as mine is), this greatly reduces the memory footprint. Finally, LINQ provides a well defined expression tree. This means that future version of the framework will be able to determine what is parallelizable and then do it. Currently, C# doesn't really offer parallel constructs (in release), and its really hard to write parallel code anyway. This will take the load off of the programmer. Hope this helps.