Z
ZHANK
编程在线教程C# 教程Lambda 与 LINQ 进阶
高级特性

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)