.Net6.0系列-6 .Net 6LinQ(二)常用扩展方法

2023-05-16

一.本节学习LinQ的扩展方法
LinQ的where返回的IEnumerable,所有的括号中都可以写lamada表达式,list,数组等都可以用LinQ
以下这些方法都是可以和Where一起使用的
Count():返回的是满足条件的个数
Any():判断集合中是否存在一条数据,返回的是布尔类型

//下面这4个方法返回的是对象
Single():有且只有一条数据,First():至少有一条,返回第一条数据,
以上这两个是程序员确定集合里面存在符合条件的记录,没有的话如果使用这两个方法的话,会抛出异常
SingleOrDefault():最多只有一条满足要求的数据,0条记录则会返回0或者null,当有多条数据时会报错
FirstOrDefault():返回第一条或者默认值,会在没有记录的时候返回null,所以建议在编程的时候使用这个方法
一般不建议使用异常报错后再处理的方式,因为会比自己处理异常的方法效率低很多
//下面这两个返回的是排序后的集合
OrderBy():对数据进行正序排序
OrderByDescending():倒序排序
OrderBy().ThenBy():先以一个条件排序,再以另一个条件排序
//下面这两条一般用于分页
Skip(n):跳过n条数据,
Take(n):获取n条数据,不足n条获取全部
//常用聚合函数
Max():获取最大值
Min():获取最小值
Average():获取平均值
Sum():求和运算
Count():求个数

//分组函数,每个分组后的返回值是int:数量 IEnumerable本组集合
GroupBy():返回值为IEnumerable<IGrouping<int,T>>

class Employee
{
	public int id{get;set;}
	public string Name{get;set;}
	public int Age{get;set;}
	public override string ToString()
	{
		return $"id={id},Name={Name},Age={Age}";	
	}
}
static void main(string[] args)
{
	List<Employe> list=new List<Employe>();
	list.Add(new Employee{id=1,Name="1",Age=1});
	list.Add(new Employee{id=2,Name="2",Age=2});
	list.Add(new Employee{id=3,Name="3",Age=3});
	IEnumerable<Employee> itemsWhere=list.where(t=>t.Age>2);
	int EntityCount=list.Count(t=>t.Age>2);
	bool Flag=list.Any(t=>Age>2);
	IEnumerable<Emplyee> Items=list.OrderBy(t=>t.Age)
	var item2=list.OrderByDescending(e=>rand.Next());
	var itemOrder=list.Orderby(t=>t.id).ThenBy(t=>t.Age)
	//跳过第一条数据从第2条开始获取2条数据
	var SkipTake=list.Skip(1).Take(2)
	//分组当然可以使用var类型推断
	IEnumerable<IGrouping<int,Employe>> items=list.GroupBy(e=>e.Age);
	foreach(IGrouping<int,Employe> ig in items)
	{
		Console.Writeline(ig.Key);
		foreach(Employe e in ig)
		{
			Console.WriteLine(e);
		}
		Console.WriteLine("******");
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net6.0系列-6 .Net 6LinQ(二)常用扩展方法 的相关文章

随机推荐