C#扩展方法 Where Any Count Signal SignalOrDefault First 等方法的使用
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 等方法的使用的更多相关文章
- 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数
<扩展和嵌入python解释器>1.4 模块方法表和初始化函数 1.4 模块方法表和初始化函数 下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法 ...
- str.方法的整理(字符串类型内置方法的具体使用)
<1>str.strip().str.lstrip()和str.rstrip() 1' str.strip()(主要方法) 方法:str.strip(self,chars) 作用:移除字符 ...
- 009-jdk1.8版本新特性一-展方法,Lambda表达式,函数式接口、方法引用构造引用
一.JDK1.8 名称:Spider(蜘蛛) 发布日期:2014-03-18 新特性: 1.1.扩展方法[接口的默认方法] Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 defaul ...
- set和push方法压入栈顶的值获取方法
向值栈里面放数据(储存的位置在root域里面) 向值栈放数据有多种方式,往往我们只用其中一种 1.set方法压栈 1)在Action中获取值栈对象,使用set()方法向值栈存放数据 ActionCon ...
- js将多个方法添加到window对象上的多种方法
方法一:(最简单也是最笨的方法) window.a = function(){}window.b = function(){}window.c = function(){} 方法二:(利用jq的ext ...
- 子类可以有跟父类中同名的方法,但是会重写父类中的方法,甚至是root class中的方法
/* 子类可以重写父类中的方法,甚至是root class中的方法,比如NSObeject 的new方法,但是后提示警告如下 Method is expected to return an insta ...
- struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)
前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...
- 5、面向对象以及winform的简单运用(方法重载、隐藏、重写与虚方法)
方法的重载: 规定一个方法可以具有不同的实现,但方法的名称是相同的.如: //同样是Man这个方法 public int Man(int age,int name) { …… } //重载 publi ...
- JAVA本地方法详解,什么是JAVA本地方法?
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...
- js调用后台方法(如果你能容忍执行的后台方法变成一个常量)
最近一直在做一个电话拨号的系统,系统不大,但是做的时间有点长了.其中用到了一个技术:js调用后台方法.解决这个问题花了不少时间,现如今仍然还有些不明白的地方,今天跟大家分享一下.真正明白的同学欢迎指正 ...
随机推荐
- 【SpringMVC】09 对JSON的应用
前面JavaWeb的JSON回顾: https://www.cnblogs.com/mindzone/p/12820877.html 上面的这个帖子我都还没有实际写进Servlet使用,要Mark一下 ...
- 【Spring-Security】Re07 持久化的记住我
Security记住我功能底层实现依赖于SpringJDBC组件,如果有持久层框架的话,就由持久层框架实现 演示案例的选型,MysqlJdbc + MybatisStarter <depende ...
- URDF使用语法【万字解析赶紧码住】 —— 机器人统一描述文件格式(Unified Robot Description Format)
原文地址: https://zhuanlan.zhihu.com/p/665269288 具体内容略,请参照原文.
- win10系统wifi不会自动连接怎么解决
参考: https://jingyan.baidu.com/article/d621e8da743bab2865913f99.html ================================ ...
- git 如何在本地批量删除匹配名称分支
背景 有时间创建了一大堆的dev/*分支,远程合并完就删除了,但本地还留下一大堆,自己又忘记删除了.一个个删除太麻烦.后面发现居然有批量删除的方法 备注:这里是window下powershell的命令 ...
- element-UI tree树形控件 修改小三角图标
.el-tree /deep/ .el-tree-node__expand-icon.expanded{ -webkit-transform: rotate(0deg); transform: rot ...
- CH03_布局
第3章:布局 本章目标 理解布局的原则 理解布局的过程 理解布局的容器 掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 WPF 窗口只能包含单个元素.为在WPF 窗口中放置多个元 ...
- Android 存储概览
存储区 Android 一开始就将存储区分为内部存储和外部存储,对应手机自带的存储和可插拔的 sd 卡(可类比于 PC 的硬盘和 U盘). 内部存储容量有限,Google 建议 App 数据尽量存储 ...
- Visual Studio Code 重置“不再询问”选项
有一次使用 VS Code 重命名一个 Python 文件时,VS Code 询问"扩展'Python'希望通过移动此文件来进行重构更改".当时没有多想,选中"不再提问& ...
- 【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题
问题现象 同一个sql有两个执行计划,是否合理? 它的EXECUTIONS,ELAPSED_TIME等统计信息怎么看,是独立分开的还是统一计算的? 如下图: 问题影响版本 tpcc测试:23.2.1. ...