[C#]List的Sort()、Find()、FindAll()、Exist()的使用方法举例
[C#基础]List的Sort()、Find()、FindAll()、Exist()的使用方法举例
List函数用得还是比较多的,正好用到其中的向个方法,做了一个例程,再总结一下:
先建一个学生类:

public class student
{
public int Number { get; set; }
public string Name { get; set; }
public bool Sex { get; set; }
public student(int _number, string _name, bool _sex)
{
Number = _number;
Name = _name;
Sex = _sex;
}
public override string ToString()
{
return string.Format("序号:{0},姓名:{1},性别:{2}",
Number.ToString(), Name, Sex ? "男" : "女");
}
}

例程代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace ListSortTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} List<student> Students = new List<student>();
private void Form1_Load(object sender, EventArgs e)
{ Students.Add(new student(1, "张一", true));
Students.Add(new student(3, "张二", false));
Students.Add(new student(5, "张三", true));
Students.Add(new student(2, "张四", false));
Students.Add(new student(4, "张五", true));
Students.Add(new student(6, "张六", false));
}
//排序按钮
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text += "**原始显示:\r\n";
showList(Students); richTextBox1.Text += "\r\n**用序号排序从小到大显示:\r\n";
Students.Sort((x, y) => x.Number < y.Number ? -1 : 0);
showList(Students); richTextBox1.Text += "\r\n**用序号排序从大到小显示:\r\n";
Students.Sort((x, y) => x.Number > y.Number ? -1 : 0);
showList(Students); richTextBox1.Text += "\r\n**用姓名排序(升序)显示:\r\n";
Students.Sort((x, y) => x.Name.CompareTo(y.Name));
showList(Students); richTextBox1.Text += "\r\n**用姓名排序(降序)显示:\r\n";
Students.Sort((x, y) => y.Name.CompareTo(x.Name));
showList(Students); richTextBox1.Text += "\r\n**用性别排序(升序)显示:\r\n";
Students.Sort((x, y) => x.Sex.CompareTo(y.Sex));
showList(Students);
} private void showList(List<student> _list)
{
for (int i = 0; i < _list.Count; i++)
{
richTextBox1.Text += _list[i].ToString() + "\r\n";
}
} private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text += "\r\n**找出Name=\"张四\"的学生:\r\n";
richTextBox1.Text += Students.Find((student s) => s.Name == "张四").ToString(); richTextBox1.Text += "\r\n\r\n**找出第一个男学生:";
richTextBox1.Text += "(该方法只会找到第一个就停止)\r\n";
richTextBox1.Text += Students.Find((student s) => s.Sex == true).ToString(); richTextBox1.Text += "\r\n\r\n**找出所有女学生:\r\n";
showList(Students.FindAll((student s) => s.Sex == false)); richTextBox1.Text += "\r\n\r\n**判断“张四”学生是否存在:\r\n";
richTextBox1.Text += Students.Exists((student s) => s.Name == "张四" ? true : false).ToString(); }
}
}

通过以上代码测试,排序效果如下:

其它功能显示如图(欢迎访问http://www.cnblogs.com/dooroo)

[C#]List的Sort()、Find()、FindAll()、Exist()的使用方法举例的更多相关文章
- Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法
1. 使用find()方法 >>> text = 'yeah, but no, but yeah, but no, but yeah' >>> text.find( ...
- Array.prototype.sort()对数组对象排序的方法
Array.prototype.sort()方法接受一个参数——Function,Function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行 ...
- java Collections.sort()实现List排序的默认方法和自定义方法
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- ORA-12805: parallel query server died unexpectedly ORA-04030 (sort subheap,sort key) 原因排查与解决方法
今日,某服务器pga调整为30G,_pga_max_size调整为8G之后(原来是2G,但是one passes语句较多,性能太低),执行出现ORA-12805: parallel query ser ...
- Mysql的“Table 'mysql.servers' doesn't exist”的解决方法
安装MYSQL后,又一次系统出现问题了,于是我查看mysql的错误日志,竟发现Table 'mysql.servers' doesn't exist问题的错误, 虽然与我的问题无关,但这个问题还是引起 ...
- java Collections.sort()实现List排序的默认方法和自定义方法【转】
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- phpcms网站迁移无法更新内容提示Table 'led_com.lz_' doesn't exist的解决方法
新接的一位客户说要把旧phpcms网站迁移到新的服务器并更换新域名,这对ytkah是小菜一碟,但往往事与愿违,忽略了一些细节会很惨的.进入新站后台怎么都无法生成内容,提示Table 'led_com. ...
- re正则match、search、findall、finditer函数方法使用
match 匹配string 开头,成功返回Match object, 失败返回None,只匹配一个. search 在string中进行搜索,成功返回Match object, 失败返回None, ...
- Linux下MySQL报Table 'xxx' doesn't exist错误解决方法,表名存在大小写区分
Linux服务器上在线装了个MySQL,但是部署web应用时一直报后台一直报错:Table 'xxx' doesn't exist. 本地测试一直都是正常的,同样的代码,同样的数据库,表是存在的,但是 ...
随机推荐
- linux 命令 — tr
tr 对stdin字符进行替换.删除和压缩,基本形式 tr [options] set1 set2 将输入的字符串中的set1字符转换为set2中对应位置的字符 set1.set2表示字符集,如果se ...
- k8s之external-etcd集群管理
一.概述 kubernetes使用etcd作为数据中心,使用kubeadm部署kubernetes的时候默认会自己部署一个etcd,当然也可以将kubeadm部署的单点的etcd做成集群,但是比较麻烦 ...
- 飞跃式发展的后现代 Python 世界
飞跃式发展的后现代Python世界 如果现代Python有一个标志性特性,那么简单说来便是Python对自身定义的越来越模糊.在过去的几年的许多项目都极大拓展了Python,并重建了“Python”本 ...
- MyBatis源码解析(八)——Type类型模块之TypeAliasRegistry(类型别名注册器)
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6705769.html 1.回顾 前面几篇讲了数据源模块,这和之前的事务模块都是enviro ...
- com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的 ...
- 第6章 LVM详解
6.1 LVM相关概念和机制 LVM(Logical Volume Manager)可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的. lvm需要使用的软件包为lvm2 ...
- 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page6-13
01 中间语言(IL) .Net中间语言(IL)的特性,很大程度上来自于要支持多语言互操作性.要支持多语言互操作性,是因为微软想搞一个大事情,将它的老产品线VB和VC++,VJ++都装入.Net架构中 ...
- Scrapy爬虫(4)爬取豆瓣电影Top250图片
在用Python的urllib和BeautifulSoup写过了很多爬虫之后,本人决定尝试著名的Python爬虫框架--Scrapy. 本次分享将详细讲述如何利用Scrapy来下载豆瓣电影To ...
- 【Redis】2、CentOS 7 上安装 redis3.2.3安装与配置
一.redis源码安装 [更正]现在最新稳定的版本已经到了3.2.8 截至到2016.8.11,redis最新稳定版本为3.2.3.本篇文章我们就以此版本为基础,进行相关的讲解. 下载redis源码, ...
- 异步是javascript的精髓
最近做了一个智能家居的APP,目前纯JS代码已经4000多行,不包括任何引入的库.还在不断升级改造中...这个项目到处都是异步.大多数都是3-4层调用.给我的感觉就是异步当你习惯了,你会发现很爽.下面 ...