LINQ概述
LINQ(Language Integrated Query , 即“语言集成查询”)。
它的提出就是为了提供一种跨越各种数据源的统一的查询方式。LINQ使对这些数据源进行的操作变得更加简单、方便和易于理解,之前的技术都过于繁琐。
具体教程看这个就够了:
包含四个组件
- Linq to Objects:对任何类型的c#内存对象提供查询,比如数组、列表和其它集合类型。
- Linq to XML组件。(之前用XPath)
- Linq to SQL组件。(之前用ADO.NET)
- Linq to DataSet组件。
查询表达式
Linq 查询结果一般是延迟执行的,即结果只是一个查询计划,就像你仅仅是组织了一段SQL 查询代码,但是还没有执行。当对查询结果进行遍历(foreach)的时候,才会真的执行查询。这个特点叫延迟执行的查询。
对数据源执行Count
、Max
、Average
和 First
此类查询,是立即执行的,这些类型的查询返回单个值。
要强制立即执行任何查询并缓存其结果,需对查询表达式调用 ToList 或 ToArray 方法。
List<int> numQuery2 = (from num in numbers where (num % 2) == 0 select num).ToList();
如果查询表达式等号左边是(var 变量名)或(IEnumerable<T>
变量名),则查询一直到处理枚举时才会执行;注意,如果枚举被处理多次,查询就会执行多次。
如果查询表达式返回标量,等号左边是(int/string/等 变量名),查询会立即执行,并且把查询结果放在查询变量中。
LINQ的本质:lambda表达式和扩展方法的组合,是对方法的调用。
写 linq 查询有两种方式
-
方法语法:使用标准的方法的调用。这些方法是一组叫做标准查询运算符的方法。注意:返回标量的运算符立即执行,返回集合的在遍历时执行。
-
查询语法:看上去像sql语句,使用查询表达式形式书写
在一个查询中可以组合两种形式。反正编译器最终会把他们翻译成标准查询运算符即方法调用的形式。
常用的LINQ 举例
分组查询时
联合查询,类似SQL联结两个表进行查询 ,用 join
更新于:2023-04-17