asp.net

C#中List的Sort()、Find()、FindAll()、Exist()的使用方法

2019-11-21

C#中List的Sort()、Find()、FindAll()、Exist()的使用方法


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();


        }

    }

}