C#简单操作:C#中List常用方法 判断存在、查找、排序

这篇具有很好参考价值的文章主要介绍了C#简单操作:C#中List常用方法 判断存在、查找、排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目常用List来进行数据操作管理,有一些方法经常百度,所以这里记录下。

目录

1. List判断元素是否存在,返回bool

2. List查找,返回对象

3. List排序

4. 对象属性打印

5. List 其他方法

C#简单操作:C#中List常用方法 判断存在、查找、排序

1. List判断元素是否存在,返回bool

 if(personList.Exists(t => t.name == "John")){//lable表达式一下List里面单个value的name属性 是否符合 “XXX”

}

2. List查找,返回对象

//Lable表达式一下Find value里面的name属性  && age属性 是否与判断条件相同 
Person temp = personList.Find(t => t.name == "Jack" && t.age > 30 && t.sex == true); 

3. List排序

class Person : IComparable<Person>
    {
        public string name;
        public int age;
        public bool sex;
 
       
        //定义比较方法,按照 age 比较
        public int CompareTo(Person other)
        {
 
            if (this.age < other.age)
            {
                return -1;
            }
            return 1;
        }
    }
 
personList.Sort();

4. 对象属性打印

    class Person : IComparable<Person>
    {
        public string name;
        public int age;
        public bool sex;
 
        //打印对象实例
        public override string ToString()
        {
            return "name: " + name + ";age: " + age + ";sex: " + sex;
        }
    }
 
person.ToString();

完整版测试代码:

namespace CSharpApp
{
    class Person : IComparable<Person>
    {
        public string name;
        public int age;
        public bool sex;
 
        public Person(string Name, int Age, bool Sex)
        {
            this.name = Name;
            this.age = Age;
            this.sex = Sex;
        }
 
 
        //定义比较方法,按照 age 比较
        public int CompareTo(Person other)
        {
 
            if (this.age < other.age)
            {
                return -1;
            }
            return 1;
        }
 
        //打印对象实例的时候使用
        public override string ToString()
        {
            return "name: " + name + ";age: " + age + ";sex: " + sex;
        }
    }
 
    class ListTest
    {
        
        static void Main(string[] args)
        {
            List<Person> personList;
            personList = new List<Person>();
 
            //给List赋值
            Person p1 = new Person("Mike", 30, true);
            Person p2 = new Person("John", 20, false);
            Person p3 = new Person("Jack", 50, true);
            personList.Add(p1);
            personList.Add(p2);
            personList.Add(p3);
 
            //List排序
            personList.Sort();
 
            if (personList.Exists(t => t.name == "John"))
            {
                //如果List中存在 name == John的元素
            }
 
            //查找 name 等于 Jack、年龄大于30、性别男的元素
            Person temp = personList.Find(t => t.name == "Jack" && t.age > 30 && t.sex == true);
            //打印找到的对象实例
            //temp.ToString();
 
            Console.WriteLine(temp.ToString());  //换行输出内容
        }
 
        
    }
}
 

5. List 其他方法

 
//定义学生类
public class Student
{
    private int id;//id
    private string name;//姓名
    private int student_//学号
    public int ID
    {
        get { return id; }
        set { id = value; }
  
    public string NAME
    {
        get { return name; }
        set { name = value; }
  
    public int STUDENT_ID
    {
        get { return student_id; }
        set { student_id = value; }
    }
}


//赋值
Student student = new Student();
List<Student> list = new List<Student>();
for (int i = 0; i < 20; i++)
{
        student.ID = i;
        student.NAME = "学生" + i;
        student.STUDENT_ID = 2000 + i;
        list.Add(student);
        student = new Student();
}

 


//使用Find: public T Find(Predicate match) { ... }

    Student result1 = list.Find((Student s) => s.NAME == "学生15");
    Console.WriteLine(@"ID:{0};姓名:{1};学号:{2}", result1.ID, 
result1.NAME, result1.STUDENT_ID);
    Console.ReadKey();
    Console.WriteLine();

//结果: ID:15;姓名:学生15;学号:2015


//使用FindAll:public List<T> FindAll(Predicate<T> match)
//查找所有ID大于10的学生
    List<Student> result2 = list.FindAll((s) => { return s.ID > 10; });
    foreach (var item in result2)
    {
        Console.WriteLine(@"ID:{0};姓名:{1};学号:{2}", item.ID, 
item.NAME, item.STUDENT_ID);
    }
    Console.ReadKey();
    Console.WriteLine();
结果:
ID:11;姓名:学生11;学号:2011
ID:12;姓名:学生12;学号:2012
ID:13;姓名:学生13;学号:2013
ID:14;姓名:学生14;学号:2014
ID:15;姓名:学生15;学号:2015
ID:16;姓名:学生16;学号:2016
ID:17;姓名:学生17;学号:2017
ID:18;姓名:学生18;学号:2018
ID:19;姓名:学生19;学号:2019

3、使用FindLast:public T FindLast(Predicate<T> match) 找到最后一个(最新一个)姓名里面有1的

    Student result3 = list.FindLast((Student s) => s.NAME.Contains("1"));
    Console.WriteLine(@"ID:{0};姓名:{1};学号:{2}", result3.ID, 
    result3.NAME, result3.STUDENT_ID);
    Console.ReadKey();
    Console.WriteLine();
 

结果:
ID:19;姓名:学生19;学号:2019

4、使用FindIndex

 public int FindIndex(Predicate<T> match)
找到学生姓名为“学生15”的序号
    int result4 = list.FindIndex((Student s) => s.NAME == "学生15");
    Console.WriteLine(@"序号:{0}", result4);
    Console.ReadKey();
    Console.WriteLine();

 结果:
序号:15
Count - List元素数量
 
Add(T item) - 向List添加对象
AddRange() - 尾部添加实现了 ICollection 接口的多个元素
BinarySearch() - 排序后的List内使用二分查找
Clear() - 移除所有元素
Contains(T item) - 测试元素是否在List内
CopyTo(T[] array) - 把List拷贝到一维数组内
Exists() - 判断存在
Find() - 查找并返回List内的出现的第一个匹配元素
FindAll() - 查找并返回List内的所有匹配元素
GetEnumerator() - 返回一个用于迭代List的枚举器
GetRange() - 拷贝指定范围的元素到新的List内
IndexOf() - 查找并返回每一个匹配元素的索引
Insert() - 在List内插入一个元素
InsertRange() - 在List内插入一组元素
LastIndexOf() - 查找并返回最后一个匹配元素的索引
Remove() - 移除与指定元素匹配的第一个元素
RemoveAt() - 移除指定索引的元素
RemoveRange() - 移除指定范围的元素
Reverse() - 反转List内元素的顺序
Sort() - 对List内的元素进行排序
如: //玩家方 事关出战的顺序 所以重新排列一下 按照元素的站位号 升序排列已入列的元素
 battleAlls.Sort((a, b) => a.battleInfo.chuZhanAtIndex.CompareTo(b.battleInfo.chuZhanAtIndex));
ToArray() - 把List内的元素拷贝到一个新的数组内
trimToSize() - 将容量设置为List中元素的实际数目


 文章来源地址https://www.toymoban.com/news/detail-509264.html

到了这里,关于C#简单操作:C#中List常用方法 判断存在、查找、排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用

    首先确保你的Service层继承的表名 控制器中使用IsAny进行根据条件判断数据是否存在

    2024年01月20日
    浏览(34)
  • C# FileInfo类的使用方法及常用操作(附代码示例)

    在C#编程中,处理文件操作是一项常见而重要的任务。为了更好地管理和操作文件,C#提供了一个强大且灵活的FileInfo类。本文将深入探讨C# FileInfo类的使用方法,并为您提供一些实用的代码示例。 FileInfo类是位于System.IO命名空间中的一个类,它提供了一系列用于操纵文件的属

    2024年02月06日
    浏览(29)
  • C++之判断文件是否存在的几种方法

    文章目录 1. 方法一:C语言之access 2. 方法二:C++方法之ifstream 3. 方法三:fopen方法 4. 方法四:sys中的stat函数方法 可以使用C语言中unistd.h里的函数access()来判断文件是否存在,其原型如下: filename是文件名,mode有下列几种方法: mode Description F_OK 测试文件是否存在 R_OK 测试文件

    2024年02月13日
    浏览(44)
  • Python中可以用三种方法判断文件是否存在

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。 所以最好在做任何操作之前,先判断文件是否存在。 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句

    2024年02月02日
    浏览(38)
  • PHP开发日志 ━━ 不同方法判断某个数组中是否存在指定的键名,测试哪种方法效率高

    我们可以用 isset($arr[\\\'a\\\']) 或者 array_key_exists(\\\'a\\\', $arr) 来判断 \\\'a\\\' 键名是否存在与 $arr 数组。 那么这两种方式哪个运行速度快呢? 不多废话了,现在我们写一段代码来测试一下: 结论是 isset() 更胜一筹。

    2024年02月02日
    浏览(58)
  • 使用python在es中基本操作详解(添加索引、查询索引、删除索引、判断索引是否存在、添加数据、更新数据、查询数据)

    示例代码1: 运行结果: 示例代码2: 运行结果: 示例代码3: 运行结果: 注意: 对比上面几种建立索引的方法,是有一定区别的。根据响应结果可以看出: es. indices.create() 方法是标准的创建索引的方法,其它几种方法在创建索引的同时也会生成一条数据,并且生成mappin

    2024年02月11日
    浏览(45)
  • 判断List、Map集合是否为空的方法

    1.判断List集合是否为空 1.1List集合已经完成初始化  这里的List集合已经完成了初始化操作,相当于是一个瓶子可以装水了,但是此时还没有水。  控制台输出:List is empty.  1.2List集合未完成初始化  这里的List集合,还没有进行初始化,相当于瓶子还不存在,用list.isEmpty()会产

    2024年02月15日
    浏览(46)
  • C#监听Dictionary、List的写入操作

    在开发中,对于内置值类型和string我们可以通过封装属性在 Set 中监听写入操作,但是对于 Dictionary 、 List 等就不能监听到 Add 、 Remove 等写入操作。 所以一般采取两种方式监听它们的读写操作,一种是封装操作方法,间接进行监听,第二种就是重写 Add 和 Remove 等方法。下面

    2024年01月17日
    浏览(28)
  • C# 操作 Word 全域查找且替换(含图片对象)

    目录 关于全域查找且替换 Word应用样本 SqlServer数据表部分设计样本 范例运行环境 配置Office DCOM 设计实现 组件库引入 实现原理 查找且替换的核心代码 窗格内容 页眉内容 页脚内容 形状内容 小结 C#全域操作 Word 查找且替换主要包括如下四个对象: 序号 对象 说明 1 Word.Appic

    2024年04月10日
    浏览(28)
  • List常用的操作

    如果存在是true,不存在是false 如果不存在,输出结果 -1 ,否则输出该元素在集合中是索引号。 直接往查询参数里传phoneList 输出结果: true 0 6、 当然,你也可以用stream流完成这个操作。 

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包