For programmers that do not come from a functional programming background, are there an mistakes to avoid?
IMO when you face LINQ, you must know these topics (they're big sources of errors):
Deferred Execution (on SO)
Closure (on SO - 1)
Closure (on SO - 2)
Closure (Eric Lippert's Blog)