C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出
目录
一、使用的方法
1. Array.FindAll(T[], Predicate) 方法
(1)定义
(2)示例
2.List类的常用方法
(1)List.Add(T) 方法
(2)List.RemoveAt(Int32) 方法
(3)List.Insert(Int32, T) 方法
(4)List.RemoveAll(Predicate) 方法
(5)List.RemoveRange(Int32, Int32) 方法
(6)示例
二、实例
1.源码
2.生成效果:
一、使用的方法
1. Array.FindAll<T>(T[], Predicate<T>) 方法
通过使用Array类的FindAll方法来实现根据指定条件在数组中检索元素的功能。
(1)定义
public static T[] FindAll<T> (T[] array, Predicate<T> match);类型参数
T
数组元素的类型。参数
array T[]
要搜索的从零开始的一维 Array。match Predicate<T>
Predicate<T>,定义要搜索元素的条件。返回
T[]
如果找到一个 Array,其中所有元素均与指定谓词定义的条件匹配,则为该数组;否则为一个空 Array。例外
ArgumentNullException
array 为 null。
- 或 -
match 为 null。
(2)示例
// 创建一个包含 50 个随机数的数组,其值范围为 0 到 1000。
// 然后, FindAll 使用 lambda 表达式为搜索条件,
// 该表达式返回 300 到 600 范围内的值。
namespace _094_1
{public class Example{public static void Main(){int[] values = GetArray(50, 0, 1000);int lowBound = 300;int upperBound = 600;int[] matchedItems = Array.FindAll(values, x =>x >= lowBound && x <= upperBound);int i = 0;foreach (int item in matchedItems){Console.Write("{0} ", item);i++;if (i % 12 == 0){Console.WriteLine();}}//for (int ctr = 0; ctr < matchedItems.Length; ctr++)//{// Console.Write("{0} ", matchedItems[ctr]);// if ((ctr + 1) % 12 == 0)// Console.WriteLine();//}}/// <summary>/// 随机生成整型数组/// </summary>/// <param name="n">数组元素个数</param>/// <param name="lower">范围的下</param>/// <param name="upper">范围的上</param>/// <returns></returns>private static int[] GetArray(int n, int lower, int upper){Random rnd = new();List<int> list = [];for (int ctr = 1; ctr <= n; ctr++)list.Add(rnd.Next(lower, upper + 1));return [.. list];//等效于return list.ToArray();}}
}
// 运行结果:
/*
476 417 509 391 461 327 383 500 359 489 495 582
543 313 596 568*/
2.List<T>类的常用方法
(1)List<T>.Add(T) 方法
将对象添加到 List<T> 的结尾处。就好像StringBuilder.Append()一样。
public void Add (T item);
参数
item T
要添加到 List<T> 末尾的对象。 对于引用类型,该值可以为 null。实现
Add(T)
(2)List<T>.RemoveAt(Int32) 方法
移除 List<T> 的指定索引处的元素。
public void RemoveAt (int index);参数
index Int32
要移除的元素的从零开始的索引。例外
ArgumentOutOfRangeException
index 小于 0。
或 - index 等于或大于 Count。
(3) List<T>.Insert(Int32, T) 方法
将元素插入 List<T> 的指定索引处。
public void Insert (int index, T item);参数
index Int32
应插入 item 的从零开始的索引。item T
要插入的对象。 对于引用类型,该值可以为 null。实现
Insert(Int32, T)例外
ArgumentOutOfRangeException
index 小于 0。
- 或 -
index 大于 Count。
(4)List<T>.RemoveAll(Predicate<T>) 方法
移除与指定的谓词所定义的条件相匹配的所有元素。
public int RemoveAll (Predicate<T> match);参数
match Predicate<T>
Predicate<T> 委托,用于定义要移除的元素应满足的条件。返回
Int32
从 List<T> 中移除的元素数。例外
ArgumentNullException
match 为 null。
(5)List<T>.RemoveRange(Int32, Int32) 方法
从 List<T> 中移除一系列元素。
public void RemoveRange (int index, int count);参数
index Int32
要移除的元素范围的从零开始的起始索引。count Int32
要移除的元素数。例外
ArgumentOutOfRangeException
index 小于 0。
或 - count 小于 0。
ArgumentException
index 和 count 不表示 List<T> 中元素的有效范围。
(6)示例
namespace _094_2
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);//添加对象:List<int> numbers = [1, 2, 3];//删除对象:numbers.RemoveAt(1); // 删除索引为1的对象(2)//插入对象:numbers.Insert(1, 4); // 在索引为1的位置插入对象(4)numbers.Add(6);numbers.Add(3);numbers.Add(6);numbers.Add(3);numbers.Add(4);numbers.Add(5);numbers.Add(6);//使用RemoveAll方法来删除List<T>中的所有对象:numbers.RemoveAll(x => x == 3); // 删除所有值为2的对象//使用RemoveRange方法来删除List<T>中指定范围的对象:numbers.RemoveRange(1, 3); // 删除索引从1开始的3个对象//使用List<T>类的GetEnumerator方法遍历列表中的剩余对象。// 先移除一个对象、再插入一个、在添加3个numbers.RemoveAt(2);numbers.Insert(2, 6);numbers.Add(6);numbers.Add(78);numbers.Add(66);// 遍历剩余对象for (int i = 0; i < numbers.Count; i++){Console.Write("{0} ",numbers[i]);}Console.WriteLine();}}
}
//运行结果:
/*
1 4 6 6 6 78 66*/
二、实例
按关键词检索并输出
1.源码
//按关键词检索输出
namespace _094
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox2;private Label? label1;private Label? label2;private TextBox? textBox1;private string[]? str_array;//定义字符串数组字段public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // textBox1显示// textBox2 = new TextBox{Location = new Point(12, 140),Multiline = true,Name = "textBox1",Size = new Size(290, 69),TabIndex = 0};// // label1// label1 = new Label{AutoSize = true,Location = new Point(39, 95),Name = "label1",Size = new Size(80, 17),TabIndex = 1,Text = "输入关键词:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(135, 19),Name = "label2",Size = new Size(0, 17),TabIndex = 2};// // textBox2输入// textBox1 = new TextBox{Location = new Point(135, 89),Name = "textBox2",Size = new Size(125, 33),TabIndex = 3};textBox1.TextChanged += TextBox1_TextChanged;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(290, 122),TabIndex = 0,TabStop = false,Text = "关键词检索"};groupBox1.Controls.Add(label1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(textBox1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(314, 221);Controls.Add(textBox2);Controls.Add(groupBox1);Name = "Form1";Text = "按关键词在数组中检索";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();str_array = ["明日科技","C#编程词典","C#范例大全","C#范例宝典"];for (int i = 0; i < str_array.Length; i++)//循环输出字符串{label2.Text += str_array[i] + "\n";}}/// <summary>/// 输出检索结果/// 使用FindAll方法查找相应字符串/// </summary>private void TextBox1_TextChanged(object? sender, EventArgs e){if (textBox1!.Text != string.Empty){string[] str_temp = Array.FindAll(str_array!, (s) => s.Contains(textBox1.Text));if (str_temp.Length > 0){textBox2!.Clear();foreach (string s in str_temp)//向控件中添加字符串{textBox2.Text += s + Environment.NewLine;}}else{textBox2!.Clear();textBox2.Text = "没有找到记录";}}else{textBox2!.Clear();}}}
}
2.生成效果:
相关文章:

C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出
目录 一、使用的方法 1. Array.FindAll(T[], Predicate) 方法 (1)定义 (2)示例 2.List类的常用方法 (1)List.Add(T) 方法 (2)List.RemoveAt(Int32) 方法 (3&…...
【前后端接口AES+RSA混合加解密详解(vue+SpringBoot)附完整源码】
前后端接口AES+RSA混合加解密详解(vue+SpringBoot) 前后端接口AES+RSA混合加解密一、AES加密原理和为什么不使用AES加密二、RSA加密原理和为什么不使用rsa加密三、AES和RSA混合加密的原理四、代码样例前端1. 请求增加加密标识2. 前端加密工具类3.前端axios请求统一封装,和返…...

React环境配置
1.安装Node.js Node.js官网:https://nodejs.org/en/ 下载之后按默认选项安装好 重启电脑即可自动完成配置 2.安装React 国内使用 npm 速度很慢,可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。 ①使用 winR 输入 cmd 打开终端 ②依…...

Pandas 数据处理-排序与排名的深度探索【第69篇—python:文本数据处理】
文章目录 Pandas 数据处理-排序与排名的深度探索1. sort_index方法2. sort_values方法3. rank方法4. 多列排序5. 排名方法的参数详解6. 处理重复值7. 对索引进行排名8. 多级索引排序与排名9. 更高级的排序自定义10. 性能优化技巧10.1 使用nsmallest和nlargest10.2 使用sort_val…...

第8节、双电机多段直线运动【51单片机+L298N步进电机系列教程】
↑↑↑点击上方【目录】,查看本系列全部文章 摘要:前面章节主要介绍了bresenham直线插值运动,本节内容介绍让两个电机完成连续的直线运动,目标是画一个正五角星 一、五角星图介绍 五角星总共10条直线,10个顶点。设定左下角为原点…...

Elasticsearch:基本 CRUD 操作 - Python
在我之前的文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x”,我详细讲述了如何建立 Elasticsearch 的客户端连接。我们也详述了如何对数据的写入及一些基本操作。在今天的文章中,我们针对数据的 CRUD (cre…...

1992-2022年全国及31省对外开放度测算数据(含原始数据+计算结果)(无缺失)
1992-2022年全国及31省对外开放度测算数据(含原始数据计算结果)(无缺失) 1、时间:1992-2022年 2、来源:各省年鉴、国家统计局、统计公报、 3、指标:进出口总额(万美元)…...

JVM之GC垃圾回收
GC垃圾回收 如何判断对象可以回收 引用计数法 如果有对象引用计数加一,没有对象引用,计数减一,如果计数为零,则回收 但是如果存在循环引用,即A对象引用B对象,B对象引用A对象,会造成内存泄漏 可…...

自然语言学习nlp 六
https://www.bilibili.com/video/BV1UG411p7zv?p118 Delta Tuning,尤其是在自然语言处理(NLP)和机器学习领域中,通常指的是对预训练模型进行微调的一种策略。这种策略不是直接更新整个预训练模型的权重,而是仅针对模型…...
fpga 需要掌握哪些基础知识?
个人根据自己的一些心得总结一下fpga 需要掌握的基础知识,希望对你有帮助。 1、数电(必须掌握的基础),然后进阶学模电, 2、掌握HDL(verilog或VHDL)一般建议先学verilog,然后可以学…...

Qt未来市场洞察
跨平台开发:Qt作为一种跨平台的开发框架,具有良好的适应性和灵活性,未来将继续受到广泛应用。随着多设备和多平台应用的增加,Qt的前景在跨平台开发领域将更加广阔。 物联网应用:由于Qt对嵌入式系统和物联网应用的良好支…...

GPT-4模型中的token和Tokenization概念介绍
Token从字面意思上看是游戏代币,用在深度学习中的自然语言处理领域中时,代表着输入文字序列的“代币化”。那么海量语料中的文字序列,就可以转化为海量的代币,用来训练我们的模型。这样我们就能够理解“用于GPT-4训练的token数量大…...
宽字节注入漏洞原理以及修复方法
漏洞名称:宽字节注入 漏洞描述: 宽字节注入是相对于单字节注入而言的,该注入跟HTML页面编码无关,宽字节注入常见于mysql中,GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问…...

【Linux】SystemV IPC
进程间通信 一、SystemV 共享内存1. 共享内存原理2. 系统调用接口(1)创建共享内存(2)形成 key(3)测试接口(4)关联进程(5)取消关联(6)释…...
iview 页面中判断溢出才使用Tooltip组件
使用方法 <TextTooltip :content"contentValue"></TextTooltip> 给Tooltip再包装一下 <template><Tooltip transfer :content"content" :theme"theme" :disabled"!showTooltip" :max-width"300" :p…...

如何使用websocket
如何使用websocket 之前看到过一个面试题:吃饭点餐的小程序里,同一桌的用户点餐菜单如何做到的实时同步? 答案就是:使用websocket使数据变动时服务端实时推送消息给其他用户。 最近在我们自己的项目中我也遇到了类似问题…...

C++ 调用lua 脚本
需求: 使用Qt/C 调用 lua 脚本 扩展原有功能。 步骤: 1,工程中引入 头文件,库文件。lua二进制下载地址(Lua Binaries) 2, 调用脚本内函数。 这里调用lua 脚本中的process函数,并…...

Centos 内存和硬盘占用情况以及top作用
目录 只查看内存使用情况: 内存使用排序取前5个: 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…...

【数据结构】堆(创建,调整,插入,删除,运用)
目录 堆的概念: 堆的性质: 堆的存储方式: 堆的创建 : 堆的调整: 向下调整: 向上调整: 堆的创建: 建堆的时间复杂度: 向下调整: 向上调整ÿ…...

v-if 和v-for的联合规则及示例
第073个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 提供vue2的一些基本操作:安装、引用,模板使用,computed&a…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...