Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 5.3 LINQ基础

5.3 LINQ基础

1. LINQ概述

LINQ(Language Integrated Query)是C#中一种强大的查询语言集成特性,允许开发者以声明式语法对数据集合(如数组、集合、数据库等)进行查询和操作。LINQ的核心优势在于:

  • 统一语法:无论数据源是内存对象、XML还是数据库,查询语法保持一致。
  • 编译时类型检查:减少运行时错误。
  • 强类型支持:利用C#类型系统提高代码可读性和安全性。

2. LINQ查询语法

LINQ提供两种查询语法:查询表达式语法(类似SQL)和方法语法(基于扩展方法)。

2.1 查询表达式语法

var query = from student in students
            where student.Age > 18
            orderby student.Name
            select student;

2.2 方法语法(链式调用)

var query = students
    .Where(s => s.Age > 18)
    .OrderBy(s => s.Name);

3. 常用LINQ操作符

类别操作符示例说明
筛选Where, OfType根据条件过滤数据
排序OrderBy, ThenBy, Reverse按指定字段排序
投影Select, SelectMany转换或展开数据
分组GroupBy, ToLookup按键值分组数据
聚合Count, Sum, Average计算统计值
集合Distinct, Union, Intersect集合操作

4. LINQ与不同数据源

4.1 LINQ to Objects

List<int> numbers = new List<int> { 1, 2, 3, 4 };
var evenNumbers = numbers.Where(n => n % 2 == 0);

4.2 LINQ to XML

XDocument doc = XDocument.Load("data.xml");
var names = from element in doc.Descendants("name")
            select element.Value;

4.3 LINQ to Entities (Entity Framework)

var query = context.Products
    .Where(p => p.Price > 100)
    .ToList();

5. 延迟执行与立即执行

  • 延迟执行:查询定义时不立即执行(如Where、Select)
  • 立即执行:调用ToList()、Count()等时触发查询
var deferredQuery = data.Where(x => x > 10); // 未执行
var result = deferredQuery.ToList();        // 此时执行

6. 性能注意事项

  1. 避免重复查询:对同一数据源多次执行LINQ时缓存结果(ToList())
  2. 复杂查询优化:使用AsParallel()进行并行查询(需权衡线程开销)
  3. 数据库查询:EF Core中注意生成的SQL语句是否高效

7. 实战示例:学生成绩查询

class Student {
    public string Name { get; set; }
    public int Score { get; set; }
}

List<Student> students = GetStudents();

// 查询分数大于80的学生并按姓名排序
var topStudents = students
    .Where(s => s.Score > 80)
    .OrderBy(s => s.Name)
    .Select(s => new { s.Name, s.Score });

提示:LINQ Pad工具(https://www.linqpad.net/)是练习LINQ查询的理想环境。


下一节:6.1 委托的定义与使用

Last Updated:: 5/3/25, 11:01 PM