title: What's the hardest or most misunderstood aspect of LINQ?
body: <p>Background: Over the next month, I'll be giving three talks about or at least including <code>LINQ</code> in the context of <code>C#</code>. 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 <code>LINQ</code> to <code>SQL</code> or the Entity Framework except as examples of how queries can be executed remotely using expression trees (and usually <code>IQueryable</code>).</p>
  
  <p>So, what have you found hard about <code>LINQ</code>? What have you seen in terms of misunderstandings? Examples might be any of the following, but please don't limit yourself!</p>
  
  <ul>
  <li>How the <code>C#</code> compiler treats query expressions</li>
  <li>Lambda expressions</li>
  <li>Expression trees</li>
  <li>Extension methods</li>
  <li>Anonymous types</li>
  <li><code>IQueryable</code></li>
  <li>Deferred vs immediate execution</li>
  <li>Streaming vs buffered execution (e.g. OrderBy is deferred but buffered)</li>
  <li>Implicitly typed local variables</li>
  <li>Reading complex generic signatures (e.g. <a href="http://msdn.microsoft.com/en-us/library/bb549267.aspx" rel="nofollow noreferrer">Enumerable.Join</a>)</li>
  </ul>