Lambda 与 LINQ 进阶
=> 表达式、语句 lambda、捕获变量、LINQ 方法链组合
Lambda 与 LINQ 进阶
Lambda 表达式是 C# 函数式编程的基石——匿名函数、闭包、配合 LINQ 实现声明式数据处理。
学完本章你将: 掌握 => 表达式/语句 lambda、捕获变量、组合 LINQ。
Lambda 语法
csharp
// 表达式 lambda
Func<int, int, int> add = (a, b) => a + b;
Func<int, int> square = x => x * x; // 单个参数可省略括号
// 语句 lambda
Action<string> log = msg =>
{
var timestamp = DateTime.Now;
Console.WriteLine($"[{timestamp}] {msg}");
};
// 无参数
Func<string> greet = () => "Hello";
捕获变量(闭包)
csharp
int factor = 10;
Func<int, int> multiply = x => x * factor;
Console.WriteLine(multiply(5)); // 50
factor = 20;
Console.WriteLine(multiply(5)); // 100——捕获的是变量引用,不是值!
LINQ 组合实战
csharp
var students = new[]
{
new { Name = "小明", Score = 85, City = "北京" },
new { Name = "小红", Score = 92, City = "上海" },
new { Name = "小刚", Score = 78, City = "北京" },
};
var topBeijing = students
.Where(s => s.City == "北京")
.Where(s => s.Score > 80)
.OrderByDescending(s => s.Score)
.Select(s => $"{s.Name}({s.Score})");
foreach (var s in topBeijing)
Console.WriteLine(s);
// 小明(85)