当前位置: 首页 > news >正文

list.FindAll of C#

[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)

 

转载于:https://www.cnblogs.com/myth7230/p/8652056.html

相关文章:

  • 关于emgucv控制多摄像头问题
  • 一分钟上手, 让 Golang 操作数据库成为一种享受
  • 逆序对问题
  • 14.boost最小生成树 kruskal_min_spainning_tree
  • CAP原则(CAP定理)、BASE理论
  • Google I/O 2014 大会总结 Android开发新方向
  • 模板中可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:...
  • 预防定时重启apache服务没有起来的脚本
  • iframe的用法
  • Unix系统编程()brk,sbrk
  • linux audit审计(2)--audit启动
  • 完美洗牌算法
  • STL::sort函数实现
  • Android中Activity和Service的数据通讯
  • X-Forwarded-For 和 X-Real-IP 的区别?
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Debian下无root权限使用Python访问Oracle
  • Golang-长连接-状态推送
  • java中的hashCode
  • Laravel Telescope:优雅的应用调试工具
  • mysql 数据库四种事务隔离级别
  • React+TypeScript入门
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue学习第二天
  • Vultr 教程目录
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 程序员最讨厌的9句话,你可有补充?
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 深度学习中的信息论知识详解
  • 一些css基础学习笔记
  • 最简单的无缝轮播
  • 带你开发类似Pokemon Go的AR游戏
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​520就是要宠粉,你的心头书我买单
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)iOS字体
  • (转)可以带来幸福的一本书
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 回调、接口回调、 委托
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET单元测试
  • .NET企业级应用架构设计系列之开场白
  • .net中的Queue和Stack
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [20150707]外部表与rowid.txt
  • [AIGC] MySQL存储引擎详解
  • [ASP]青辰网络考试管理系统NES X3.5