LINQ is a nice way to write a more readable code but sometimes it is diffucult to understand the actions and the order they happens.
Visual LINQ project would give you an idea (watch the screencast of Visual LINQ in action) :
So for this query
VisualSource<string> words = new VisualSource<string>
(new[] { "the", "quick", "brown", "fox", "jumped",
"over", "the", "lazy", "dog" },
canvas, "words");
var query = from word in words
where word.Length > 3
select new { Word = word, Length = word.Length};
pipeline = query.End();
you will see similar screens:
Download source code.
(For more detailed info read Jon Skeet's blog post Visual LINQ: Watch query expressions as they happen!)