Lambda在C#中可以说是灵活的语法糖,用来表示匿名方法或委托。
在快捷查询中比较常用
LINQ(Language Intergrated Query)
首先我们声明一个泛型数组和两个类,用来更好的展示用处
List<int> numbers = new List<int> {1,2,3,4,5,6,7,8,9,10 };
public class Student
{
public int Id;
public string Name;
}
public class Grade
{
public int StudentId;
public int Score;
}
1.筛选
Where属于LINQ语句,用于定义查询逻辑的
var even = numbers.Where(x => x % 2 == 0); // var:未知,当我们不知道返回类型的时候可以用var,它可以自动识别类型
简便写法:
var evenNumber = from num in numbers //from 代表for循环
where num % 2 == 0 //where 代表筛选
select num; //select 代表选择
利用了from where select 关键字,相当于把三套业务逻辑整理在了一起,适用于复杂的查询
Console.WriteLine($"list中的偶数有:{string.Join(",", eveNumber)}");
2.排序
使用某个键按升序排序OrderBy
语法:对象.OrderBy();
用法:numbers.OrderBy( x => x);
3.过滤
使用OfType过滤出指定类型的元素
语法:对象.OfType<>();
用法:numbers.OfType<int>();
4.投影
Select投影数据,将每个元素转换为另一种形式
语法:对象.Select();
用法:numbers.Select( x => x * 2);
5.聚合操作符
Count显示数量
语法:对象.Count();
用法:numbers.Count();
//计算总和,最小值,最大值,平均值
numbers.Sum(); //总和
numbers.Min(); //最小值
numbers.Max(); //最大值
numbers.Average(); 平均值
6.转换
ToList() 将查询结果转换成想要的List<T>
语法:对象.ToList();
用法:numbers.Where(x => x > 5).ToList(); //将numbers中大于5的数据转换为List类型
ToArray()将查询结果转换成Array
语法:对象.ToArray();
用法:numbers.Where(x => x > 5).ToArray();//将numbers中大于5的数据转换为List类型
总结:
Where:代表条件过滤
OrderBy:按升序排列
OfType:过滤出指定类型的元素
Select:投影数据,将每个元素转换为另一种形式
Count:显示元素的数量
ToList:转换成想要的List
ToArray:转换成Array