Module 1 · LINQ Fundamentals · Lesson 1 of 32
Introduction: from first principles to modern .NET
From First Principles to Expression Trees, Performance, and Modern .NET
A practical, interview-grade reference. Every concept is paired with code, time complexity, gotchas, and the why. Code targets C# 13 / .NET 9–10 but the fundamentals apply from .NET Core 3.1 onward.
How to read this guide
The guide is built in layers.
Part 1 is the mental model — read it even if you "already know LINQ," because most LINQ bugs trace back to two ideas: deferred execution and the IEnumerable vs IQueryable split.
Parts 2–3 are the working reference (operators + performance).
Parts 4–5 go deep (expression trees, dynamic queries, custom operators, PLINQ, async).
Part 6 is a focused tour of what each recent .NET version added.
Parts 7–8 are the do/don't list and a one-page cheat sheet.
Part 1 — Foundations
1.1 What LINQ actually is
1.2 The two syntaxes: query vs method
1.3 They are extension methods — here's how that works
1.4 The two worlds: IEnumerable<T> vs IQueryable<T>
1.5 Deferred vs immediate execution
1.6 Func<T> vs Expression<Func<T>> — delegates vs expression trees
1.7 Expression trees: the basics
Part 2 — Core operators (the ones you actually use)
2.1 Filtering
2.2 Projection
2.3 Ordering
2.4 Partitioning / paging
2.5 Quantifiers
2.6 Element operators
2.7 Aggregation
2.8 Grouping
2.9 Joins
2.10 Set operations
2.11 Materialization & conversion
2.12 Generation
Part 3 — Performance & time complexity
3.1 Complexity cheat sheet (LINQ to Objects, n = input)