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()可以立即执行。