- LINQ是集成在.NET编程语言的一种特性。它允许使用C#、VB.NET等语言在内存中方便的查询信息。
LINQ提供了一种跨数据源和数据格式的同意模型,实现查询。
- LINQ标准查询操作符允许查询作用于所有基于 IEnumerable<T> 接口的数据源。
IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代,IEnumerable<T>接口是.NET Framework中最基本的集合访问器。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。
//完整语法
from [type] id in source
[join [type] id in source on expr equa;s [into subGroup]]
[from [type] id in source | let id=expr | where condition]
[orderby ordering,ordering,ordering...]
select expr|group expr by key
[into id query]
IEnumerable接口是LINQ查询的核心接口,只有实现了IEnumerable接口数据源,才能执行相关的LINQ操作。
LINQ操作步骤:
- 获取数据源
- 创建查询
- 执行查询
- LINQ分别为”查询语法”和“方法语法”两种用法。
1.lambda表达式基于数学中的”λ 演算” 得名;
什么是λ 演算呢?
λ 演算是一套用于研究函数定义、函数应用和递归的形式系统。λ 演算可以被称为最小的通用程序设计语言。它包括一条变换规则 (变量替换) 和一条函数定义方式,λ演算之通用在于,任何一个可计算函数都能用这种形式来表达和求值。因而,它是等价于图灵机的。尽管如此,λ演算强调的是变换规则的运用,而非实现它们的具体机器。可以认为这是一种更接近软件而非硬件的方式。它一个数理逻辑形式系统,使用变量代入和置换来研究基于函数定义和应用的计算。希腊字母λ被用来在λ演算模型中表示将一个变量绑定在一个函数中。
语法:
形参列表=>方法体
2.方法语法
方法语法的本质就是通过扩展方法和Lambda表达式来创建查询的。
static void Main(string[] args)
{
string[] demo = { "TA", "DY", "HC", "MAY", "HI" };
IEnumerable<string> query = demo
.Where(n => n.Contains("a"))
//按长度进行排列
.OrderBy(n => n.Length)
//把结果转换成大写
.Select(n => n.ToUpper());
foreach (string demo in query){
Console.WriteLine(demo);
}
}
// Result:
TA
MAY