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.hqwc.cn/news/22160.html

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

相关文章

WebSocket从入门到精通

WebSocket 是什么&#xff1f; WebSocket是HTML5规范提出的一种协议&#xff1b;目前除了IE浏览器&#xff0c;其他浏览器都基本支持。它是一种协议&#xff0c;万变不离其宗&#xff0c;也是基于TCP协议的&#xff0c;和HTTP协议是并存的两种协议。HTML5 Web Sockets规范定义了…

SpringBoot 整合RabbitMQ

SpringBoot 整合 RabbitMQ 概念 2007 年发布&#xff0c;是一个在 AMQP(高级消息队列协议)基础上完成的&#xff0c;可复用的企业消息系统&#xff0c;是当前最主流的消息中间件之一。 RabbitMQ是一个由erlang开发的AMQP&#xff08;Advanced Message Queue 高级消息队列协议…

gma 2 教程(二)数据操作:3. 支持生成的栅格格式信息

为了方便了解和选择输出栅格格式、配置高级创建选项&#xff0c;下表列出了gma可以生成&#xff08;复制/创建/转换&#xff09;的所有栅格格式的主要信息&#xff1a; 格式名生成模式支持数据类型扩展名多维栅格支持色彩映射表支持的数据类型多波段支持压缩模式AAIGrid复制By…

微擎后台getshell,低权限也可以

/web/index.php?csite&aeditor 这个文件可以编辑html&#xff0c;然后前台会解析成php 没测试最新版 比如编辑专题&#xff1a;/web/index.php?csite&aeditor&dopage&multiid0 上架抓包 改html内容为php 复制前台url 访问之 博客原文&#xff1a; 微擎后…

4、Kubernetes 架构、理解 k8s 架构

kubeadm 用于初始化 Cluster。 kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。 Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Ku…

Python——— 面向对象

&#xff08;一&#xff09;初识面向对象 Python完全采用了面向对象的思想&#xff0c;是真正面向对象的编程语言&#xff0c; 完全支持面向对象的基本功能&#xff0c;例如&#xff1a;继承、多态、封装等。 Python 支持面向过程、面向对象、函数式编程等多种编程范 式。 Pyth…

6.2Java EE——Spring的入门程序

下面通过一个简单的入门程序演示Spring框架的使用&#xff0c;要求在控制台打印“张三&#xff0c;欢迎来到Spring”&#xff0c;实现步骤具体如下。 1、在IDEA中创建名称为chapter06的Maven项目&#xff0c;然后在pom.xml文件中加载需使用到的Spring四个基础包以及Spring依赖…

SpringCloud Alibaba微服务分布式架构组件演变

文章目录 1、SpringCloud版本对应1.1 技术选型依据1.2 cloud组件演变&#xff1a; 2、Eureka2.1 Eureka Server &#xff1a; 提供服务注册服务2.2 EurekaClient &#xff1a; 通过注册中心进行访问2.3 Eureka自我保护 3、Eureka、Zookeeper、Consul三个注册中心的异同点3.1 CP…

Amazon 上的数字孪生:使用 L3 预测性数字孪生来预测“行为”

在上一篇博文中&#xff0c;我们讨论了数字孪生的定义和框架&#xff0c;这与我们的客户在其应用中使用数字孪生的方式一致。我们将数字孪生定义为“单个物理系统的动态数字表示&#xff0c;它通过数据进行动态更新以模仿物理系统的真实结构、状态和行为&#xff0c;从而加快获…

2023 node 接入腾讯云短信服务,实现发送短信功能

1、在 腾讯云开通短信服务&#xff0c;并申请签名和正文模板 腾讯云短信 https://console.cloud.tencent.com/smsv2 a、签名即是短信的开头。例如 【腾讯云短信】xxxxxxx&#xff1b; b、正文模板即短信内容&#xff0c; 变量部分使用{1}&#xff0c; 数字从1开始累推。例如&a…

(数组与矩阵) 剑指 Offer 03. 数组中重复的数字 ——【Leetcode每日一题】

❓ 剑指 Offer 03. 数组中重复的数字 难度&#xff1a;简单 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出…

图像分类论文阅读

该论文通过结合VGG-19和VIT模型,实现乳腺超声图像的分类Breast Ultrasound Images Dataset | Kaggle PyTorch VGG19复现代码 # VGG19.py import torch import torch.nn as nnclass Conv(nn.Module):def __init__(self, in_channels, out_channels, kernel_size=1, stride=1,…