Linq简介
Linq全称Language Integrated Query(语言集成查询),为我们提供一种统一的方式来查询和操作各种数据。
- linq to object:是针对实现IEnumerable的对象的linq
- linq to sql 是针对关系数据库的linq
- linq to xml 针对xml文档
Linq除了提供一个同一的API来操作各种数据,还有编译时检查和多态创建表达式的能力
Linq查询时有两种语法:
查询表达式语法(Query Expression)
方法语法(Fluent Syntax)两者互补
查询表达式语法
基本语法
from 变量 in 数据源对象
[where 条件]
[group 变量 by 表达式 into 临时标识符]
[orderby 表达式]
select 选择列
static void Main(string[] args)
{
int[] nums = { 10, 15, 20, 25, 30 };
// 从数组中查询所有偶数
var result = from n in nums
where n % 2 == 0
select n;
// 输出查询结果
foreach(int num in result)
{
Console.WriteLine(num);
}
}
1、查询表达式语法与SQL(结构查询语言)语法相同。
2、查询语法必须以from子句开头,可以以Select或GroupBy子句结束 。
3、使用各种其他操作,如过滤,连接,分组,排序运算符以构造所需的结果。
4、隐式类型变量 - var可以用于保存LINQ查询的结果。
方法语法
查询表达式语法VS方法语法
查询表达式语法与方法语法存在着紧密的关系
1、CLR本身并不理解查询表达式语法,它只理解方法语法。
2、编译器负责在编译时将查询表达式语法翻译为方法语法。
3、大部分方法语法都有对应的查询表达式语法形式:如Select()对应select、OrderBy()对应orderby
4、部分查询方法目前在C#中还没有对应的查询语句:如Count()和Max()
Linq之查询语法
orderby n(des