关于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并行处理,但需注意线程安全与开销。

浙公网安备 33010602011771号