Z
ZHANK
字符串与集合

LINQ 基础

Where/Select/OrderBy 方法链、查询表达式、延迟执行

LINQ 基础

LINQ(Language Integrated Query) 是 C# 最强大的特性之一——用统一的语法查询数据库、XML、集合。

学完本章你将: 掌握 Where/Select/OrderBy 方法链、查询表达式、延迟执行。


方法链 vs 查询表达式

csharp
var numbers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// 方法链(推荐——更灵活)
var odds = numbers
    .Where(n => n % 2 == 1)
    .Select(n => n * n)
    .OrderByDescending(n => n);

// 查询表达式(类似 SQL)
var odds2 = from n in numbers
            where n % 2 == 1
            orderby n descending
            select n * n;

// 结果:81, 49, 25, 9, 1

常用 LINQ 方法

csharp
// 过滤
.Where(n => n > 5)

// 映射
.Select(n => n * 2)

// 排序
.OrderBy(n => n)
.OrderByDescending(n => n)
.ThenBy(n => n)        // 次级排序

// 聚合
.Count()               // 计数
.Sum()                 // 求和
.Average()             // 平均
.Min() / .Max()        // 最值

// 判断
.Any(n => n > 5)       // 是否存在
.All(n => n > 0)       // 是否全部
.Contains(5)           // 是否包含

// 集合操作
.Distinct()            // 去重
.Skip(3).Take(5)       // 跳过 3 个取 5 个(分页)
.First() / .FirstOrDefault()
.Single() / .SingleOrDefault()

// 分组
.GroupBy(n => n % 2)   // 按奇偶分组

💡 LINQ 是延迟执行的——定义查询时不执行,遍历时才执行。用 .ToList() 可以立即执行。