7. LINQ
What is LINQ? (C# 3.0+)
LINQ Providers
int[] numbers = { 1, 2, 3, 4, 5 };
var evens = numbers.Where(n => n % 2 == 0);var customers = from c in db.Customers
where c.City == "London"
select c;Query Syntax vs Method Syntax
Side-by-Side Comparison
When to Use Each
Mixing Both Syntaxes
LINQ Operators by Category
1. Filtering Operators
Where - Filter elements
OfType<T> - Filter by type
2. Projection Operators
Select - Transform elements
SelectMany - Flatten nested collections
3. Sorting Operators
OrderBy / OrderByDescending
ThenBy / ThenByDescending - Secondary sort
Reverse - Reverse order
4. Grouping Operators
GroupBy - Group by key
ToLookup - Create lookup dictionary
5. Join Operators
Join - Inner join
GroupJoin - Left outer join
Zip - Combine two sequences
6. Set Operators
Distinct - Unique elements
Union - Combine sets (distinct)
Intersect - Common elements
Except - Difference
7. Quantifier Operators
Any - At least one matches
All - All match
Contains - Specific element exists
8. Aggregation Operators
Count / LongCount
Sum
Average
Min / Max
Aggregate - Custom aggregation
9. Element Operators
First / FirstOrDefault
Last / LastOrDefault
Single / SingleOrDefault
ElementAt / ElementAtOrDefault
DefaultIfEmpty
10. Generation Operators
Range - Sequence of integers
Repeat - Repeat value
Empty - Empty sequence
11. Partitioning Operators
Take / Skip
TakeWhile / SkipWhile
TakeLast / SkipLast (C# 6.0+)
Chunk (C# 6.0+)
12. Conversion Operators
ToArray / ToList (Immediate Execution!)
ToDictionary
ToLookup
ToHashSet (C# 7.3+)
AsEnumerable / AsQueryable
Cast<T>
13. Concatenation Operators
Concat
Append / Prepend (C# 7.3+)
14. Equality Operator
SequenceEqual
Deferred vs Immediate Execution
Deferred Execution (Lazy Evaluation)
Immediate Execution (Eager Evaluation)
Execution Behavior Table
Category
Deferred
Immediate
Multiple Enumeration Warning
Let Clause (Query Syntax)
Into Clause (Query Syntax)
Performance Considerations
1. Multiple Enumeration
2. ToList() Timing
3. LINQ vs foreach
4. Avoid Unnecessary Operations
Common LINQ Patterns
Pattern 1: Filtering and Projecting
Pattern 2: Grouping and Aggregating
Pattern 3: Joining Collections
Pattern 4: Pagination
Pattern 5: Distinct Values from Property
Pattern 6: Top N Items
Pattern 7: Conditional Filtering
Pattern 8: Flattening Nested Data
LINQ Quick Reference Table
Category
Operator
Purpose
Example
Top 20 Most-Used LINQ Operators
Common Pitfalls
1. Modifying Collection During Iteration
2. Forgetting ToList/ToArray
3. Using Single() Incorrectly
4. Unnecessary ToList Chains
Best Practices
1. Use Method Syntax (Modern Approach)
2. Materialize at the End
3. Use FirstOrDefault Over First
4. Prefer Any() Over Count() > 0
5. Use Specific Operators
6. Avoid Multiple Enumerations
7. Use LINQ for Readability
Decision Tree: Which LINQ Operator?
Last updated