LINQ 查询

C# 教程 · 第 7 章 · 7 次浏览

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);
    }
}