LINQ Basics (Where, Select, OrderBy, FirstOrDefault) Masterclass
๐ Covered in this chapter:
LINQ Overview ยท Query vs Method Syntax ยท Where Filtering ยท Select Projection ยท OrderBy Sorting ยท FirstOrDefault ยท Aggregates (Sum, Avg, Min, Max)
Welcome to Phase 8 (Chapter 23): C# LINQ Basics (Language Integrated Query) Masterclass! LINQ integrates query capabilities directly into the C# language syntax. In this lesson, we cover query syntax vs method syntax, filtering (Where), projection (Select), sorting (OrderBy, ThenBy), element operators (First, FirstOrDefault, Single), and aggregate operators (Count, Sum, Average, Min, Max, Any, All).
1Method Syntax vs Query Syntax
C# โ LINQ Method vs Query Syntax
โถ Run in Compiler
List<int> numbers = new() { 10, 15, 20, 25, 30 };
// 1. Method Syntax (Fluent API using Lambdas โ Recommended)
var evenDoubledMethod = numbers
.Where(number => number % 2 == 0)
.Select(number => number * 2);
Console.WriteLine("Method Syntax Result:");
foreach (int num in evenDoubledMethod) Console.WriteLine(num);
// 2. Query Syntax (SQL-like syntax)
var evenDoubledQuery = from number in numbers
where number % 2 == 0
select number * 2;
2LINQ Aggregates & Element Operators
C# โ LINQ Operators Example
โถ Run in Compiler
List<int> scores = new() { 85, 92, 78, 95, 60 };
Console.WriteLine($"Count: {scores.Count()}");
Console.WriteLine($"Sum: {scores.Sum()}");
Console.WriteLine($"Average: {scores.Average():F2}");
Console.WriteLine($"Max: {scores.Max()}, Min: {scores.Min()}");
bool hasTopScorer = scores.Any(s => s >= 90);
Console.WriteLine($"Has 90+ score: {hasTopScorer}");
int firstPass = scores.FirstOrDefault(s => s >= 80);
Console.WriteLine($"First score >= 80: {firstPass}");
3Technical FAQs
Q1: What is the difference between First() and FirstOrDefault()?
First() throws an InvalidOperationException if no matching element is found. FirstOrDefault() returns the type's default value (e.g., 0 or null) safely without throwing an exception.