using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Runtime.ExceptionServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks; // 命名空间
namespace pro01
{
// 类
internal class Program
{
// main 方法
static void Main(string[] args)
{
// LINQ 常用的扩展方法 IEnumerable<T> 扩展方法
// 数组 List 集合,Dictionary 字典,都是实现 IEnumerable 接口的扩展方法
// 初始化数据
List<Employee> list = new List<Employee>(); // 新建类型为 Employee 的集合数据
list.Add(new Employee {Id = 1,Name = "AAA",Age = 10,Gender = true ,Salary = 1000 });
list.Add(new Employee {Id = 2,Name = "BBB",Age = 11,Gender = false ,Salary = 2000 });
list.Add(new Employee { Id = 3,Name = "CCC",Age = 121,Gender = true ,Salary = 7000 });
list.Add(new Employee { Id = 3,Name = "CCC",Age = 121,Gender = true ,Salary = 3000 }); // 把 list 中 年龄等于 10 的筛选出来
IEnumerable<Employee> items1 = list.Where(item => item.Age == 10);
Console.WriteLine(items1);
foreach (Employee z in items1)
{
Console.WriteLine(z);
} // Count 打印 list 的个数
int v = list.Count();
Console.WriteLine($"list 的个数 {v}"); // 筛选出id = 3 且 工资大于 5000 的数据
IEnumerable<Employee> items2 = list.Where(row => row.Id == 3 && row.Salary > 5000);
foreach (Employee j in items2)
{
Console.WriteLine("================================");
Console.WriteLine(j);
} // Any 判断集合中是否至少有一条数据满足条件 返回 true 或者 false
Console.WriteLine("================Any============");
Console.WriteLine(list.Any(item => item.Id == 1)); // 集合是否包含 Id 为 1 的数据 true
Console.WriteLine(list.Any(item => item.Id == 100)); // false // signal 获取一条数据
// Single 有且只有一条满足要求的数据 返回 true 没有数据或者满足多条的数据就会报错
//SignalOrDefault 最多只有一条满足要求的数据
// First 至少有一条 返回第一条数据 返回第一条满足条件的数据
// FirstOrDefault 返回第一条或者 默认值
// list.Single(); // 序列包含一个以上的元素 包含多个满足条件的数据 所以报错
List<Employee> list2 = new List<Employee>();
list2.Add(new Employee { Id = 111, Name = "AAA", Age = 10, Gender = true, Salary = 1000 });
//list2.Add(new Employee { Id = 222, Name = "AAA", Age = 10, Gender = true, Salary = 1000 });
//var fg = list2.Where(ele => ele.Id == 111).Single();
var fg = list2.Single();
Console.WriteLine(fg); IEnumerable<Employee> item4 = list.Where(row => row.Id > 2 && row.Salary > 2000);
Console.WriteLine("==========Single=============");
foreach(Employee i in item4)
{
Console.WriteLine(i);
}
// Employee e4 = item4.Single(); // 序列包含一个以上的元素 //Employee e1 = list.Single(col => col.Id == 1);
//Console.WriteLine("Signal", e1); Console.ReadLine();
}
}
}

C#扩展方法 Where Any Count Signal SignalOrDefault First 等方法的使用的更多相关文章

  1. 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数

    <扩展和嵌入python解释器>1.4 模块方法表和初始化函数   1.4 模块方法表和初始化函数 下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法 ...

  2. str.方法的整理(字符串类型内置方法的具体使用)

    <1>str.strip().str.lstrip()和str.rstrip() 1' str.strip()(主要方法) 方法:str.strip(self,chars) 作用:移除字符 ...

  3. 009-jdk1.8版本新特性一-展方法,Lambda表达式,函数式接口、方法引用构造引用

    一.JDK1.8 名称:Spider(蜘蛛) 发布日期:2014-03-18 新特性: 1.1.扩展方法[接口的默认方法] Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 defaul ...

  4. set和push方法压入栈顶的值获取方法

    向值栈里面放数据(储存的位置在root域里面) 向值栈放数据有多种方式,往往我们只用其中一种 1.set方法压栈 1)在Action中获取值栈对象,使用set()方法向值栈存放数据 ActionCon ...

  5. js将多个方法添加到window对象上的多种方法

    方法一:(最简单也是最笨的方法) window.a = function(){}window.b = function(){}window.c = function(){} 方法二:(利用jq的ext ...

  6. 子类可以有跟父类中同名的方法,但是会重写父类中的方法,甚至是root class中的方法

    /* 子类可以重写父类中的方法,甚至是root class中的方法,比如NSObeject 的new方法,但是后提示警告如下 Method is expected to return an insta ...

  7. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

  8. 5、面向对象以及winform的简单运用(方法重载、隐藏、重写与虚方法)

    方法的重载: 规定一个方法可以具有不同的实现,但方法的名称是相同的.如: //同样是Man这个方法 public int Man(int age,int name) { …… } //重载 publi ...

  9. JAVA本地方法详解,什么是JAVA本地方法?

    一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...

  10. js调用后台方法(如果你能容忍执行的后台方法变成一个常量)

    最近一直在做一个电话拨号的系统,系统不大,但是做的时间有点长了.其中用到了一个技术:js调用后台方法.解决这个问题花了不少时间,现如今仍然还有些不明白的地方,今天跟大家分享一下.真正明白的同学欢迎指正 ...

随机推荐

  1. 【Spring Data JPA】04 JPQL和原生SQL

    @Transactional注解 让Spring处理事务 不需要自己每次都手动开启提交回滚 FINDONE & GETONE的区别? findone是立即加载 getone是延迟加载,配合事务 ...

  2. ComfyUI插件:efficiency-nodes-comfyui节点

    前言: 学习ComfyUI是一场持久战, efficiency-nodes-comfyui是提高工作流创造效率的工具,包含效率节点整合工作流中的基础功能,比如Efficient Loader节点相当于 ...

  3. 白鲸开源 X SelectDB 金融大数据联合解决方案公布!从源头解决大数据开发挑战

    业务挑战与痛点 随着互联网技术的发展.云计算技术的成熟.人工智能技术的兴起和数字化经济的崛起,数据已成为企业的核心资产.在金融行业中,数字化已成为了支撑各类业务场景的核心力量,包括个人理财.企业融资. ...

  4. Grafana的仪表盘URL参数设置

    转载请注明出处: 在调试grafana时,需要对grafana进行share的url图表进行一些自定义设置,总结下常用的参数 参考网站:https://grafana.com/docs/grafana ...

  5. 【线段树合并/树上差分】[P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并

    [线段树合并/树上差分]P4556 [Vani有约会] 雨天的尾巴 /[模板]线段树合并 思路 对 \(x,y,lca(u,v),fa_{lca(u,v)}\) 四个点进行树上差分,然后用线段树合并动 ...

  6. games101 作业1及作业2分析及解决 详解透视矩阵

    games101 作业1及作业2分析及解决 去年的时候把games101的课程以及作业完成,但是整个过程比较粗略,也借助了不少外界的力量(doge),于是最近准备抽几天集中再把作业(1-7)过一遍,常 ...

  7. SPI协议,MCP2515裸机驱动详解

    SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH, ...

  8. navicat远程连接报错

    mysql,2003 can't connect to mysql server on 10038 我们连接远程服务器的mysql,如果出现问题,很大问题会出在服务器的端口和授权问题 # 首先我们通过 ...

  9. Graphics2D绘图方法总结

    一.简介 在开发中可能会遇到这样一类场景,业务复杂度不算太高,技术难度不算太深,但是做起来就很容易把人整破防,伤害很高侮辱性很强的:绘图. 绘图最怕有人挑刺:这里变形,那里不对,全图失真. 最近在处理 ...

  10. chmod 使用

    数字 权限 4 (100) 读 2 (010) 写 1 (001) 执行 u 表示该文件的拥有者,g 表示该文件的拥有者所属的组,o 表示其他人,a 表示所有人. e.g. # 数字表示法 chmod ...