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调用后台方法.解决这个问题花了不少时间,现如今仍然还有些不明白的地方,今天跟大家分享一下.真正明白的同学欢迎指正 ...
随机推荐
- 全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
全网最适合入门的面向对象编程教程:30 Python 的内置数据类型-object 根类 摘要: 在 Python 中,所有的类都直接或间接继承自一个根类,这个根类是Object.Object类是 P ...
- 中电信翼康济世数据中台基于Apache SeaTunnel构建数据集成平台经验分享
作者 | 中电信翼康工程师 代来编辑 | Debra Chen 一. 引言 Apache SeaTunnel作为一个高性能.易用的数据集成框架,是快速落地数据集成平台的基石.本文将从数据中台战略背景. ...
- 12-es6类的方式封装折线图
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- Java IO流的简单使用 通俗易懂 超详细 【内含案例】
IO流简单使用 InputStream 字节输入流 OutputStream 字节输出流 Reader 字符输入流 Writer 字符输出流 代码示例 输入和输出是相对于程序来说的,读取到程序中叫做输 ...
- 恶补基础知识:Java 栈与队列详解
@ 目录 前言 简介 栈 Java实现栈的示例代码: 栈的主要应用场景包括: 队列 Java实现队列的示例代码: LinkedList中的add方法和offer方法的区别 队列主要应用场景: 总结 前 ...
- Uncaught SyntaxError: The requested module ‘/node_modules/.vite/vue-router.js?v=2f0f3daf’ does not provide an export named ‘VueRouter’
Uncaught SyntaxError: The requested module '/node_modules/.vite/vue-router.js?v=2f0f3daf' does not p ...
- Flutter调试debug或者打包release帧率只有60的原因
问题描述 最近发现Flutter中引入像素较大的静态图片或者字体导致调试或者打包之后在高刷手机上帧率只有60的问题. 测试设备为小米13,可在开发者选项中直接打开帧率显示, 也可使用statsfl插件 ...
- 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之分布式追踪
概述 分布式追踪是一种跟踪应用程序请求流经不同服务(如前端.后端.数据库等)的过程.它是一个强大的工具,可以帮助您了解应用程序的工作原理并调试性能问题. Quickwit 是一个用于索引和搜索非结构化 ...
- 基于PaddleOCR + NLP实现证件识别
基于PaddleOCR + NLP实现证件识别 PaddleOCR识别 paddleOCR安装 安装 anconda虚拟环境(可参考yolov5的安装教程) paddleOCR识别 PaddleNLP ...
- 连续因子一个正整数 N
一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...