关于LINQ

LINQ

Language-Intergrated Query 语言集成查询,是 C# 中强大的数据查询工具,它将查询能力直接集成到语言中,支持对集合、数据库、XML 等多种数据源进行统一操作。

可以用于.net原生集合、SQL数据库、XML文档、JSON文档(Newtonsoft.Json)

两种形式:

  • 查询表达式:类 SQL 语法,适合复杂查询。

    from p in products
    where p.Price > 100
    select p.Name
    
  • 链式表达式:基于扩展方法,更灵活,支持函数式编程。

    products.Where(p => p.Price > 100).Select(p => p.Name)
    

常用操作符

操作符 说明
where / Where 条件过滤
select / Select 数据映射
orderby / OrderBy 排序
group by / GroupBy 分组
let 定义中间变量
into 继续查询
Distinct 去重
Intersect 交集
Union 并集
Except 差集
First / Last / Single 元素访问
Any / All / Contains 判断条件
// 找出偶数并排序
var evenNumbers = numbers.Where(n => n % 2 == 0).OrderBy(n => n);

// 求两个列表的交集
var common = list1.Intersect(list2);

// 统计元素出现次数
var count = list.Count(x => x == target);

延迟执行

LINQ 中的大多数操作符是延迟执行的,只有在遍历或调用以下方法时才会执行查询:

  • ToList() / ToArray()
  • ToDictionary()
  • Count() / Sum() / Min() / Max()
  • First() / Last() / Take()
var query = list.Where(x => x > 5); // 未执行
var result = query.ToList();        // 执行查询

高级特性

  • ParallelQuery:支持并行查询,提升大数据集处理性能。
  • 展平与笛卡尔积
    • 使用 SelectMany 展平嵌套集合
    • 查询表达式中多个 from 子句实现笛卡尔积
// 笛卡尔积
from a in listA
from b in listB
select new { a, b }

注意事项

  • 延迟执行有助于避免不必要的计算,但重复遍历可能导致性能问题。
  • 复杂查询建议使用 SelectMany 替代嵌套循环。
  • 大数据场景可结合 ParallelQuery 并行处理,但需注意线程安全与开销。
posted @ 2026-04-01 14:50  hélium  阅读(5)  评论(0)    收藏  举报