一.本节学习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("******");}
}

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

  1. WebAPi添加常用扩展方法及思维发散

    前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. We ...

  2. distinct返回null报错_C#之集合常用扩展方法与Linq

    一.集合的常用扩展方法(lambda的方式) 1.Where() 根据条件选择数据 2.Select() 根据数据条件转换成新的数据类型,类似于DTO转换类 3.Max() 根据条件选择最大值 4.M ...

  3. C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型...

    本文内容: 继承 Equal示例 结构和类 属性 Ref and Out 类操作 扩展方法 接口 可空类型 分部类 1. 继承 using System; using System.Collectio ...

  4. [C# 基础知识系列]专题十五:全面解析扩展方法

    引言:  C# 3中所有特性的提出都是更好地为Linq服务的, 充分理解这些基础特性后.对于更深层次地去理解Linq的架构方面会更加简单,从而就可以自己去实现一个简单的ORM框架的,对于Linq的学习 ...

  5. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

  6. LXD 2.0系列之二:LXD安装和配置

    本文讲的是LXD 2.0系列之二:LXD安装和配置, [编者的话] 第三方调查报告 显示LXD有潜质成为一款受欢迎的第三方容器管理工具.本文是LXD核心维护者.加拿大程序员Stéphane Grabe ...

  7. vSphere 5.0系列之二 vSphere Client的安装

    1.安装包如下载所示,解压之后,可选择安装不同语言 2.开始安装 3.专利说明 4.直接同意 5.两个都要填写 6.安装目录自己可以更改 7.单击安装 8.开始安装的过程 9.到这一步已基本安装完成了 ...

  8. 王姨劝我学HarmonyOS鸿蒙2.0系列教程之二应用知识梳理逻辑!

    原创PDF |<Android 深入系统完全讲解>免费开源,可能价值百万! 王姨劝我学HarmonyOS鸿蒙2.0系列教程之一环境搭建&&跑起来模拟器! 写完了第一篇,跑去 ...

  9. 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引

    [源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0  1.积少成 ...

最新文章

  1. Android UI Button 和GridView 的设计--优化(2)
  2. 【Apollo源码分析】系列的第三部分【prediction】_slamcode的博客 -CSDN博客
  3. 两个不同分支之间的代码合并
  4. 腾讯云,物联网通信产品,动态注册步骤
  5. JAVA_SE基础——24.面向对象的内存分析
  6. LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】
  7. golang go语言_在7小时内学习快速简单的Go编程语言(Golang)
  8. 在windows下调试ruby192
  9. bzoj 3374: [Usaco2004 Mar]Special Serial Numbers 特殊编号
  10. linux下安装anconda
  11. gradle 区分系统_Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件...
  12. 编写GOM引擎登录器,直接启动GOM客户端DAT文件不掉线
  13. 辣椒app软件测试,testflight辣椒视频
  14. 指数基金投资指南——阅读笔记
  15. 牛客小白月赛7 谁是神箭手
  16. 深入理解机器学习——集成学习(Ensemble Learning):基础知识
  17. 数据挖掘相关免费软件
  18. 聊天机器人中的深度学习
  19. 变量的作用功能、作用域和作用形态
  20. node的process

热门文章

  1. 如何在 3dMax 中制作游戏中的战斧模型?
  2. 订单打标java_java 操作打标机的Dll 文件
  3. 1104-捷径(DP)
  4. SimpleDateFormat格式设置24小时制时
  5. [论文笔记] Detection of Glottal Closure Instants from Speech Signals: CNN Method
  6. 汽车基础软件「众生相」
  7. 工作队列模式(任务队列)| RabbitMQ系列(二)
  8. 【数据库】PostgreSQL简介
  9. Sin City --《罪恶之城》
  10. 学生信息管理系统-数据结构课程设计