LinQ较为高级的语法

查询部门列的数据,延迟

var items=from c in customers
          where c.ID<100
		  //匿名函数,可自定义属性count、ordercount
		  select new{Id=c.ID,cname=c.cusname,count=0,ordercount=c.order.count()};
		  
	//延迟加载(查询直到需要枚举结果时才真正执行) ,查询三部曲:获取源、定义查询、执行,  
    foreach (var item in items)
    {
	 console.Writeline(item.cname+"------"+item.order.count); 
	 
	}count=0,ordercount=c.order.count()};
		  
	//延迟加载(查询直到需要枚举结果时才真正执行) ,查询三部曲:获取源、定义查询、执行,  
    foreach (var item in items)
    {
	 console.Writeline(item.cname+"------"+item.order.count); 
	 
	}

关于延迟:返回值单一(一个int,string等)时没有延迟

GroupBy

//按照姓名分组,空格分隔,取空格前的部分
var result =persons.GroupBy(p=>p.Split(new char[]{' ' ))[0]);

foreach (var group in result)
{
	Console.WriteLine("姓"+group.Key);//只有姓
	foreach(var name in group)//姓名打出
	{
		Console.WriteLine("\t"+name);
	}
}GroupBy(p=>p.Split(new char[]{' ' ))[0]);

foreach (var group in result)
{
	Console.WriteLine("姓"+group.Key);//只有姓
	foreach(var name in group)//姓名打出
	{
		Console.WriteLine("\t"+name);
	}
}

分页:小伙伴面试的时候被问到了这个问题,当时初听到大脑一片空白,分页?后来上网查了查,原来在积分系统中我写了*次linq的分页——我这记性也是醉醉的敲打

 ReturnClassifyList = (from A in ListClassifiyModel where (A.GradeID.Contains(TableEntity.GradeID)) select A).OrderBy(p => p.GradeID).ThenBy(p => p.levelID).ThenBy(p => p.ClassmateID).ThenBy(p => p.FillDate).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

Take方法的作用是从结果中取固定数量的值;skip可以取出除去满足条件的剩下的记录

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/72681986