LINQ 查询
LINQ(Language Integrated Query)让 C# 用类似 SQL 的方式查询集合。它有两种写法:方法语法(链式调用)和查询语法(类 SQL)。
核心操作
- 过滤:Where(predicate)
- 投影:Select(x => 新形状)
- 排序:OrderBy / OrderByDescending
- 分组:GroupBy
- 聚合:Sum / Count / Average / Max / Min
- 取前 N:Take(n)
延迟执行
LINQ 查询是延迟执行的:定义时不执行,遍历/聚合时才执行。注意要在同一数据源上避免重复执行。
代码示例
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
var students = new List<(string Name, int Score, string Class)> {
("张三", 90, "一班"), ("李四", 76, "一班"),
("王五", 88, "二班"), ("赵六", 65, "二班"),
};
// 方法语法
var top = students
.Where(s => s.Score >= 80) // 过滤
.OrderByDescending(s => s.Score) // 排序
.Select(s => $"{s.Name}({s.Score})"); // 投影
Console.WriteLine("80分以上: " + string.Join(", ", top));
// 分组统计
var byClass = students
.GroupBy(s => s.Class)
.Select(g => $"{g.Key}: 平均{g.Average(s => s.Score):F1}");
foreach (var c in byClass) Console.WriteLine(c);
}
}