一、集合的常用扩展方法(lambda的方式)

1.Where() 根据条件选择数据

2.Select() 根据数据条件转换成新的数据类型,类似于DTO转换类

3.Max() 根据条件选择最大值

4.Min() 根据条件选择最小值

5.OrderBy() 根据条件升序排序

如果升序中Id都为1,那么就根据第二个条件进行升序排序,使用ThenBy

ThenByDescending()紧接着倒序排序

6.First() 获取第一个(如果不存在则报错)

7.FirstOrDefault() 获取第一个,如果不存在则返回null或默认值

8.Single() 获取唯一一个,如果没有或者多个则报异常

9.SingleOrDefault() 获取唯一一个,如果没有则返回默认值,如果多个则报错

10.Any() 判断集合中是否包含元素,如果有返回true,否则返回false。一般比Count效率高。因为Any()只要查询到数据就返回,Count是统计数据的数量。Any还可以指定条件表达式。

11.Distinct() 去除重复数据

(1)int类型的集合:List。

(2)string类型的集合:List

(3)对于自定义类的集合去重复

使用Linq中Distinct方法内进行比较的是对象引用,判断的是对象是否引用同一个对象,而不是对象的属性。因此我们使用对象集合使用Distinct方法时要使用重载

Distinct(this IEnumerable source, IEqualityComparer comparer);

要使用这个方法,重写IEqualityComparer接口,再使用Distinct方法:

由于直接获取对象的HashCode,用HashCode进行比较的速度比Equals方法更快,因此IEqualityComparer内部会再使用Equals前先使用GetHashCode方法,再两个对象的HashCode都相同时即判断对象相同。

而当两个对象HashCode不相同时,Equals方法就会被调用,对要比较的对象进行判断。由于在List集合中两个引用实际上是两个不同的对象,因此HashCode必定不相同,所以要触发Equals方法,只需要改GetHashCode,让它返回相同的常量。

12.Skip(n)跳过前n条数据,Take(m)获取最多m条数据,如果不足m条也不会报错。

13.Except(item1) 排除当前集合中在item1中存在的数据。

如果是自定义集合,需要同Distinct方法一样实现IEqualityComparer接口

14.Union(item1)把当前集合和item中元素组合(求并集)

自定义集合实现IEqualityComparer

15.Intersect(item1) 把当前集合和item中元素求交集

16.GroupBy() 分组(其中Key值是分组返回值)

按照string类型进行返回值

17.SelectMany() 把集合中每个对象的集合属性的值重新拼接为一个新的集合(不能去除重复数据)

18.Join() 联合查询(可以查询两个表某个属性相同的数据)

使用扩展方法,本人只找到添加一个条件查询,没有找到添加多个条件查询,但是使用Linq方式的Join可以使用添加多个条件查询。

二、Linq写法

上面介绍的是lambda的方式写的,下面介绍的是Linq的写法。两种方法可以相互替代,没有哪个好哪个坏的区别。在编译器编译的时候,使用Linq的写法最终都被编译成了lambda的方式的写法(通过反编译工具可以看出)

建议:需要join等复杂用法的时候Linq更易懂,一般的时候lambda方式的写法更清晰、紧凑。同时这两种写法可以混合书写。

必须是:from 变量 in 集合,并且是select xxx结尾

1.Where(s=>s.Id>2)写法:

2.Select(s=>new GetData(){Id=s.Id,Name=s.Name})写法:

3.OrderBy(s=>s.Id). ThenBy(s=>s.Name.Length);写法

4.Join联合查询(两个集合的条件判断相等不能使用”==”,而是使用equals)

一个条件的联合查询

多个条件查询

5.group by 分组

distinct返回null报错_C#之集合常用扩展方法与Linq相关推荐

  1. distinct返回null报错_distinct

    刚布署了的mysql查询报错: this is incompatible with DISTINCT 解决方法: 在mysql 配置文件my.ini 或者my.cnf 里添加: [mysqld] sq ...

  2. distinct返回null报错_在Java中如何避免“!=null”式的判空语句?

    问题描述: 我整天都是在跟Java打交道.我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空.这么做是为了避免NullPointerException.但是 ...

  3. distinct返回null报错_mysql中distinct

    1.Distinct 位置 单独的distinct只能放在开头,否则报错,语法错误,与其他函数使用时候,没有位置限制如下 Select player_id,count(distinct(task_id ...

  4. mysql注入报错函数_MySQL注入常用函数

    注入的分类 仁者见仁,智者见智. 基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 •基于布尔 SQL 盲注 •基于时间的 SQL 盲注 •基于报错 ...

  5. 前端JavaScript 常见的报错及异常捕获与处理方法

    前言 在开发中,有时,我们花了几个小时写的js 代码,在浏览器调试一看,控制台一堆红,瞬间一万头草泥马奔腾而来. 至此,本文主要记录js 常见的一些错误类型,以及常见的报错信息,分析其报错原因,并给予 ...

  6. python https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 解决方法

    python爬虫,使用requests库发送https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 解决方法: imp ...

  7. maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的中添加 org.apache.maven.plugins maven-compiler-plugin 2 ...

  8. 转)VCSA 6.5重启无法访问,报错“503 Service Unavailable”的解决方法

    转)VCSA 6.5重启无法访问,报错"503 Service Unavailable"的解决方法 1. 问题 重启vcenter,登陆vsphere client,提示 &quo ...

  9. vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)...

    vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文) 转载于:https://www.cnblogs.com/ ...

最新文章

  1. lk中内联调用的dsb()
  2. [YTU]_1046 ( 输入10个数字,然后逆序输出)
  3. 不同服务器之间进行传输
  4. 在几何画板中如何制作圆柱的侧面展开动画_倒计时与时钟演示 | 几何画板
  5. 如何让自己的写的程序在阿里云一直运行
  6. 从Maven远程存储库下载
  7. 使用solrj api操作solr
  8. 索引超出了数组界限(Microsoft.SqlServer.Smo)
  9. mysql查询学生成绩语句_SQL查询成绩之精典语句
  10. 维修电工技师技能实训考核装置QY-W05
  11. day09、1 - 简单渗透测试流程
  12. 【数据分析】数据指标
  13. 浅谈CA与证书以及Openssl管理证书
  14. jdk-8u271这里的u是什么意思
  15. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)
  16. 为响应国家号召1+X证书Web前端开发最新考试模拟题
  17. 使用a标签下载文件而不是直接打开
  18. Linux系统中read的用法,Linux系统中read的使用技巧
  19. 快速学习html、css的经典笔记
  20. springboot2稳定版本_SpringBoot2.2.x 版本CPU增高BUG分析|chu

热门文章

  1. linux根文件系统 /etc/resolv.conf 文件详解
  2. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)
  3. Linux 环境 zookeeper集群安装、配置、测试
  4. Redis的启动、使用和停止
  5. 结构损伤检测与智能诊断 陈长征_宿迁厂房安全检测多少钱介绍说明
  6. matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...
  7. 逐鹿工具显示服务器错误连接不上怎么解决,win7系统安装逐鹿工具箱提示“error launching installer”错误的解决方法...
  8. oracle管理员登录报错,关于Oracle使用管理员账号登录失败的问题
  9. 窄带语谱图c语言算法,MELP语音编码算法实现及算法改进
  10. fpgrowth算法实战 mlib_【spark】41.Spark Mlib:FPGrowth算法