让数据傻瓜化,LINQ 提供了一种统一的语法来查询和操作不同类型的数据,如集合、数据库、XML 文档等。以下详细介绍其作用:
1.统一一的数据查询语法
2. 提高代码可读性和可维护性
3. 延迟执行和流式处理
4. 数据转换和投影
5. 简化数据操作
LINQ基本用法

手写一个where方法

第二种方式

使用var变量接收,省事情,和JavaScript差不多但是区别在于
var i=5; 这时候i就会被自动推断为int类型
此时就不能在 i='111',赋值为其他类型了,会报错

这时候可以用c#的弱类型变量dynamic

Linq常用方法

设置好一个对象

where、count、Any
where:遍历数组,可以加上过滤条件
count:查询满足条件的数量
Any:查询是否有一条数据满足

Single和SingleOrDefault
Single:这些数据中,根据条件返回唯一满足条件的一个数据,如果有多条满足,或者一条都不满足就报错
SingleOrDefault:根据条件返回唯一满足条件的一个数据,如果有多条满足,就报错,如果一条都不满足就返回默认值,引用数据类型为null,数字类型为0

First和FirstOrDefault
First:查找并返回数据中第一个满足条件的数据,如果一条都不满足则报错。
FirstOrDefault:查找并返回数据中第一个满足条件的数据,如果一条则返回默认值。

OrderBy和OrderByDescending
正序和倒序排序

链式调用,做两次排序

限制结果集Skip和Take
Skip(2)跳过两条数据,Take(10)取从开始到第10条数据,如果没有则能取多少取多少,可以单独使用,也可以一起使用

Max、Min、Average
最大值,最小值,平均值

GrupBy
把相同条件的对象放入一个大数组中,里面的每个item,就是一个存放相同条件的数组

这是打印的结果

Select映射
将满足条件的值映射到新的数组中

也可以把数组中的数据取出来映射到另一个对象里去

利用select把数组中每一项的Name和Age映射到另一个对象里

匿名类型对象,必须用var声明,然后new的时候不需要添加对象名称,就只要后面加一个对象即可

用匿名类型进行映射也是一样的

ToList和ToArray
Linq方法返回的是IEnumerable,而ToList和ToArray可以把IEnumerable转换为List和Array

案例
案例1

起先是list列表然后变成这样的,GrupBy后面排序就用OrderBy利用Key排序,然后取前三个数组,把数组的数据,年龄,数组里的对象数,以及平均工资,映射到一个新的匿名对象里
[
[{ Id = 4, Name = "lucy", Age = 28, Gender = false, Salary = 2000 },{ Id = 4, Name = "lucy", Age = 28, Gender = false, Salary = 2000 }],
[{ Id = 4, Name = "lucy", Age = 28, Gender = false, Salary = 2000 },{ Id = 4, Name = "lucy", Age = 28, Gender = false, Salary = 2000 }]
]

案例2


案例3
求字符串中数字的平均值

4113

被折叠的 条评论
为什么被折叠?



