C# Linq 详解二

目录

概述

七、OrderBy 

八、OrderByDescending

九、Skip

十、Take

十一、Any

十二、All


C# Linq 详解一
1.Where
2.Select
3.GroupBy
4.First / FirstOrDefault
5.Last / LastOrDefault

C# Linq 详解二
1.OrderBy 
2.OrderByDescending
3.Skip
4.Take
5.Any
6.All

C# Linq 详解三
1.Sum / Min / Max / Average
2.Distinct
3.Concat
4.Join
5.ToList 
6.ToArray
7.ToDictionary

C# Linq 详解四
1.SelectMany
2.Aggregate
3.DistinctBy
4.Reverse
5.SequenceEqual
6.Zip
7.SkipWhile 
8.TakeWhile

C# Linq 详解一_熊思宇的博客-CSDN博客

C# Linq 详解三_熊思宇的博客-CSDN博客

C# Linq 详解四_熊思宇的博客-CSDN博客

概述

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性查询语法编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。
 

七、OrderBy 

OrderBy 方法用于对集合中的元素进行升序排序。它返回一个新的排序后的集合,而不会修改原始集合。

这里是根据用户的年龄做了一个排序,在 OrderBy 方法的参数就是要排序的内容。

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<People> peopleList = new List<People>(){new People(){Name="张三", Age=12, Career="学生" },new People(){Name="柱子", Age=25, Career="农民" },new People(){Name="铁蛋", Age=23, Career="农民" },new People(){Name="狗剩", Age=34, Career="职员" },new People(){Name="二狗", Age=28, Career="职员" },};var collect = peopleList.OrderBy(x => x.Age);foreach (var people in collect){Console.WriteLine("姓名:{0}, 年龄:{1}", people.Name, people.Age);}Console.ReadKey();}}class People{public string Name { get; set; }public int Age { get; set; }public string Career { get; set; }}
}

运行:

另一种就是纯数字了,这种排序的用法和上面一样

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){int[] numbers = { 5, 2, 8, 4, 1 };var sortedNumbers = numbers.OrderBy(n => n);foreach (var number in sortedNumbers){Console.WriteLine(number);}Console.ReadKey();}}
}

运行:

八、OrderByDescending

OrderByDescending 方法用于对集合中的元素进行降序排序。它返回一个新的排序后的集合,而不会修改原始集合。

OrderByDescending 是 OrderBy 的降序排序,用法和 OrderBy 也差不多,只是返回的值顺序不一样

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<People> peopleList = new List<People>(){new People(){Name="张三", Age=12, Career="学生" },new People(){Name="柱子", Age=25, Career="农民" },new People(){Name="铁蛋", Age=23, Career="农民" },new People(){Name="狗剩", Age=34, Career="职员" },new People(){Name="二狗", Age=28, Career="职员" },};var collect = peopleList.OrderByDescending(x => x.Age);foreach (var people in collect){Console.WriteLine("姓名:{0}, 年龄:{1}", people.Name, people.Age);}Console.ReadKey();}}class People{public string Name { get; set; }public int Age { get; set; }public string Career { get; set; }}
}

运行:

九、Skip

Skip方法用于跳过序列中指定数量的元素,并返回剩下的元素。

案例:

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<People> peopleList = new List<People>(){new People(){Name="张三", Age=12, Career="学生" },new People(){Name="柱子", Age=25, Career="农民" },new People(){Name="铁蛋", Age=23, Career="农民" },new People(){Name="狗剩", Age=34, Career="职员" },new People(){Name="二狗", Age=28, Career="职员" },};var collect = peopleList.Skip(1);foreach (People people in collect){Console.WriteLine(people.Name);}Console.ReadKey();}}class People{public string Name { get; set; }public int Age { get; set; }public string Career { get; set; }}
}

运行:

注意这里,skip 传入的是1,它表示从数组中的1这里开始,包含1的下标在里面,一起返回回来

这么写可能不明显,用数字来写会更明显一点,看下面的案例,传入的索引是3,那么就是数组中的下标3这里开始,包含3在里面,一直到结束,下标3这里是数字是24,那么就是24-15

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };var collect = numList.Skip(3);foreach (int num in collect){Console.WriteLine(num);}Console.ReadKey();}}
}

运行:

十、Take

Take 方法用于从集合中选择指定数量的元素。它返回一个新的集合,其中包含原始集合中的前几个元素。

Skip 获取的是后半部分,那么 Take 则是获取前半部分,用法差异不大。

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };var collect = numList.Take(4);foreach (int num in collect){Console.WriteLine(num);}Console.ReadKey();}}
}

运行:

十一、Any

Any 方法用于检查集合中是否存在满足指定条件的元素。它返回一个布尔值,表示集合中是否存在符合条件的元素。

any 方法只要数组中条件满足一个,就会返回 true,比如数组中是否有一个年龄大于 23的人,它会从数组的第一个元素开始遍历,假设第一个元素满足条件,那么就立马返回 true。

案例1,查找是否存在年龄大于23的元素

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<People> peopleList = new List<People>(){new People(){Name="张三", Age=12, Career="学生" },new People(){Name="柱子", Age=25, Career="农民" },new People(){Name="铁蛋", Age=23, Career="农民" },new People(){Name="狗剩", Age=34, Career="职员" },new People(){Name="二狗", Age=28, Career="职员" },};bool result = peopleList.Any(x => x.Age > 23);Console.WriteLine("寻找结果:{0}", result);Console.ReadKey();}}class People{public string Name { get; set; }public int Age { get; set; }public string Career { get; set; }}
}

运行:

案例2,查找是否存在名字叫二狗的人

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<People> peopleList = new List<People>(){new People(){Name="张三", Age=12, Career="学生" },new People(){Name="柱子", Age=25, Career="农民" },new People(){Name="铁蛋", Age=23, Career="农民" },new People(){Name="狗剩", Age=34, Career="职员" },new People(){Name="二狗", Age=28, Career="职员" },};bool result = peopleList.Any(x => x.Name == "二狗");Console.WriteLine("寻找结果:{0}", result);Console.ReadKey();}}class People{public string Name { get; set; }public int Age { get; set; }public string Career { get; set; }}
}

运行:

如果将名字改为王五,那么就找不到了


 

运行:

十二、All

All 方法用于检查集合中的所有元素是否都满足指定的条件。它返回一个布尔值,表示集合中的所有元素是否都满足条件。

和 any 不一样的是,all 会判断所有的元素是否满足条件,只要有一个不满足条件,就返回 false

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };bool result = numList.All(x => x > 0);Console.WriteLine("结果:{0}", result);Console.ReadKey();}}
}

运行:

当前数组中的所有值都大于0,所以返回是  true,下面换一种写法:

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{internal class Program{static void Main(string[] args){List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };bool result = numList.All(x => x > 23);Console.WriteLine("结果:{0}", result);Console.ReadKey();}}
}

运行:

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arm day2

汇编实现1到100的累加 .text .global _start_start:mov r0,#0loop:add r0,#1add r1,r0cmp r0,#100blne loopstop:b stop结果为0x13ba等于5050

python的魔法函数

一、介绍 在Python中&#xff0c;魔法函数是以双下划线__开头和结尾的特殊函数。它们在类定义中用于实现特定的行为&#xff0c;例如运算符重载、属性访问、迭代等。 以下是一些常见的Python魔法函数&#xff1a; __init__: 这是一个特殊的构造函数&#xff0c;在创建类的实例…

Web_php_include

代码审计 进入环境&#xff0c;根据题目的提示&#xff0c;本题考察文件包含漏洞 <?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) {$pagestr_replace("php://", "", $page); } incl…

解决Ruoyi单体版本集成Echarts多图表时在Tab模式下不展示问题

目录 背景 一、Tab拆分后无法展示 1、环境简介 2、原始报表功能说明 3、tab切分遇到的问题 二、问题分析及解决 1、问题分析 2、问题解决 3、初始化时图表渲染 4、Tab切换时重渲 总结 背景 最近在使用ruoyi的单体化版本进行Echarts多图表展示时遇到一个问题&#xff0c;r…

苍穹外卖day03——菜品管理业务代码开发

目录 公共字段自动填充——问题分析和实现思路 公共字段自动填充——代码实现(1) 公共字段自动填充——代码实现完善(2) 新增菜品——需求分析与设计 产品原型 ​编辑 接口设计 ​编辑 数据库设计 新增菜品——代码开发1(文件上传接口) 配置文件 Controller层代码 前后…

Java经典面试解析:服务器卡顿、CPU飙升、接口负载剧增

01 线上服务器CPU飙升&#xff0c;如何定位到Java代码 解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路&#xff0c;以CentOS为例&#xff0c;总结为4步。 第1步&#xff0c;使用top命令找到占用CPU高的进程。 第2步&#xff0c;使用ps –mp命令找到进程下…

无线电音频-BPA600蓝牙协议分析仪名词解析

1 介绍 2 Baseband基带分析 (1)Delta 是什么含义? "Delta" 有多个含义,取决于上下文。以下是常见的几种含义: 希腊字母:Delta&#x

Linux(centos7)下安装mariadb10详解

MariaDB 和 MySQL 之间存在紧密的关系。 起源&#xff1a;MariaDB 最初是作为 MySQL 的一个分支而创建的。它的初始目标是保持与 MySQL 的兼容性&#xff0c;并提供额外的功能和性能改进。 共同的代码基础&#xff1a;MariaDB 使用了 MySQL 的代码基础&#xff0c;并在此基础上…

Docker 常用命令

docker命令大全 命令说明docker attach将本地标准输入、输出和错误流附加到正在运行的容器docker build从 Dockerfile 构建镜像docker builder管理构建docker checkpoint管理检查点docker commit从容器的更改中创建新图像docker config管理 Docker 配置docker container管理容器…

如何清除视频和照片中水印的几种方式

文章目录 如何清除视频和照片中水印的几种方式一、清除视频中水印的几种方式1、截除水印区域2、模糊水印区域3、使用人工智能技术工具3.1 通过【iMyFone-MarkGo[^1]】消除水印3.2 通过【嗨格式视频转换器[^2]】消除水印3.3 通过【PR 视频编辑器】消除水印3.4 通过 【美图秀秀】…

【Linux】网络基础之UDP协议

目录 &#x1f308;前言&#x1f338;1、传输层&#x1f33a;2、重谈端口号&#x1f368;2.1、端口号范围划分&#x1f367;2.2、认识知名端口号 &#x1f340;3、UDP协议&#x1f368;3.1、UDP协议报文结构&#x1f369;3.2、UDP协议的特点&#x1f36a;3.3、基于UDP的应用层协…

openwrt 阿里云盘webdav 转成 samba4挂载

需要rclone 与samba4-server rclone 吧webdav挂载到openwrt的某个目录下。 然后通过samba-server 挂载出去。 安装rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash 安装fuse opkg install fuse-utils 软连接 ln -s /usr/bin/fusermount /usr/bin/fuse…

【Kubernetes运维篇】RBAC之创建集群用户管理K8S

文章目录 一、创建zhangsan集群用户赋予uat名称空间管理员权限二、创建lisi集群用户赋予查看所有名称Pod权限 需求&#xff1a;公司新入职两位运维同事&#xff0c;分别是zhangsan、lisi&#xff0c;刚入职肯定不能给K8S管理员权限&#xff0c;所以需要创建两个系统账号&#x…

k8s与集群管理

从docker讲起 终于有人把 Docker 讲清楚了&#xff0c;万字详解&#xff01; Docker资源&#xff08;CPU/内存/磁盘IO/GPU&#xff09;限制与分配指南 默认情况下&#xff0c;Docker容器是没有资源限制的&#xff0c;它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资…

chinese_lite OCR使用教程

目录 一、简介二、环境三、项目地址四、使用说明五、各语言的Demo地址六、效果展示 一、简介 超轻量级中文ocr&#xff0c;支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) crnn(2.5M) anglenet(378KB)) 总模型仅4.7M 二、环境 python3.6linux/macos/windows 三…

JVM回收算法(标记-清除算法, 复制算法, 标记-整理算法)

1.标记-清除算法 最基础的算法&#xff0c;分为两个阶段&#xff0c;“标记”和“清除” 原理&#xff1a; - 标记阶段&#xff1a;collector从mutator根对象开始进行遍历&#xff0c;对从mutator根对象可以访问到的对象都打上一个标识&#xff0c;一般是在对象的header中&am…

自动化测试框架性能测试报告模板

目录 一、项目概述 二、测试环境说明 三、测试方案 四、测试结果 五、结果分析 总结&#xff1a; 一、项目概述 1.1 编写目的 本次测试报告&#xff0c;为自动化测试框架性能测试总结报告。目的在于总结我们课程所压测的目标系统的性能点、优化历史和可优化方向。 1.2 …

AUTOSAR CP标准的RTE和BSW各模块的设计及开发工作

AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;是一种开放的汽车电子系统架构标准&#xff0c;旨在提供一种统一的软件架构&#xff0c;以实现汽车电子系统的模块化和可重用性。 AUTOSAR标准中的两个重要模块是RTE&#xff08;Runtime Environment&…

【AI底层逻辑】——篇章5(上):机器学习算法之回归分类

目录 引入 一、何为机器学习 1、定规则和学规则 2、算法的定义 二、机器学习算法 1、常见学习方法 2、回归 3、分类 续下篇... 往期精彩&#xff1a; 引入 计算机发明初&#xff0c;专家通过将专业知识和经验梳理成规则输入计算机程序&#xff0c;但是这样跟不上知识…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…