What's the hardest or most misunderstood aspect of LINQ?

c#, c#-3.0, linq

Solution

Delayed execution

Problem

Background: Over the next month, I'll be giving three talks about or at least including `LINQ` in the context of `C#`. I'd like to know which topics are worth giving a fair amount of attention to, based on what people may find hard to understand, or what they may have a mistaken impression of. I won't be specifically talking about `LINQ` to `SQL` or the Entity Framework except as examples of how queries can be executed remotely using expression trees (and usually `IQueryable`). So, what have you found hard about `LINQ`? What have you seen in terms of misunderstandings? Examples might be any of the following, but please don't limit yourself! - How the `C#` compiler treats query expressions - Lambda expressions - Expression trees - Extension methods - Anonymous types - `IQueryable` - Deferred vs immediate execution - Streaming vs buffered execution (e.g. OrderBy is deferred but buffered) - Implicitly typed local variables - Reading complex generic signatures (e.g. Enumerable.Join)

Original source