C# LINQ 入门:查询语法与常用子句
LINQ 是什么
LINQ(Language Integrated Query,语言集成查询)把查询能力引入 C#。查询可以使用语言自身的表达式来描述,而不必总是作为字符串嵌入程序。它让筛选、排序、分组等数据处理更易表达。
基本组成
原文介绍了以下几类用途:
- LINQ to Objects:查询实现
IEnumerable或IEnumerable<T>的内存集合。 - LINQ to DataSet:查询 DataSet 中的数据。
- LINQ to XML:查询或操作 XML 结构及文档。
- LINQ to SQL:早期 .NET Framework 中的关系数据库查询方案。
同步整理时补充:LINQ 是一组查询技术,不能把内存集合上的操作与数据库查询混为一谈。数据库查询是否能够翻译为 SQL,以及怎样执行,取决于查询提供程序。
命名空间
System.Linq:常用查询扩展方法。System.Xml.Linq:LINQ to XML 的类型。System.Data.Linq:旧版 LINQ to SQL 相关类型,不能视为现代 .NET 项目的通用数据库命名空间。
八个基本查询子句
| 关键字 | 用途 |
|---|---|
from |
指定范围变量和数据源 |
where |
按条件筛选数据 |
select |
指定结果的形状或投影 |
group |
对查询结果分组 |
orderby |
排序,可使用 ascending 或 descending |
into |
引入查询延续标识符,或用于分组连接 |
join |
按键关联两个数据源 |
let |
定义一个范围变量,保存子表达式的结果 |
查询语法
原文给出的结构是:
var 结果 = from 元素 in 数据源
where 条件
orderby 排序表达式
select 元素;
同步补充:可运行示例
下面的控制台程序筛选大于 10 的数字,再按升序输出:
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 12, 23, 3, 4, 2, 234, 123 };
var query = from number in numbers
where number > 10
orderby number
select number;
foreach (int number in query)
{
Console.WriteLine(number);
}
}
}
输出为 12、23、123、234,每个数字单独一行。查询语法可以转换为相应的方法调用;过滤和排序也可以写为 numbers.Where(number => number > 10).OrderBy(number => number)。
本文由本人 CSDN 原创文章《C#编程之Linq-语言集成查询》同步整理。新增示例和技术说明由 AI 辅助整理,保留原文知识结构,并修正命名空间与排版。

浙公网安备 33010602011771号