C#中List的Find方法的使用

本文介绍了一种使用C#中的Find方法高效查找List集合内特定元素的方法,并通过具体示例展示了如何实现这一过程。

查找List中的某个值,可以使用循环遍历对比,查找出结果。C#中提供了Find方法,可以直接使用,只要查找条件传入就可。如下:

    class Program      {          public static void Main(string[] args)          {              List<User> userCollection = new List<User>();                userCollection.Add(new User(1, "testOne"));                userCollection.Add(new User(2, "testTwo"));                userCollection.Add(new User(3, "testThree"));                User resultUser = userCollection.Find(                    delegate(User user)                  {                      //return user.UserID == 0;                        return user.UserID == 1 && user.UserName.Equals("testOne");                  });                Console.WriteLine(resultUser != null ?                                     resultUser.UserID + System.Environment.NewLine + resultUser.UserName : "没有查找到");                Console.ReadLine();          }      }        public class User      {          private int userID = 0;            private string userName = string.Empty;            public int UserID          {              get              {                  return this.userID;              }          }            public string UserName          {              get              {                  return this.userName;              }          }            public User(int userID, string userName)          {              this.userID = userID;                this.userName = userName;          }      }

结果:


### C# 中 `FindIndex` 方法使用示例 在 C# 中,`List<T>` 类提供了 `FindIndex` 方法,用于查找列表中满足指定条件的第一个元素的索引。该方法支持三种重载形式:查找第一个匹配项、从指定位置开始查找第一个匹配项以及从指定范围中查找第一个匹配项。 以下是一个完整的代码示例,展示如何使用 `FindIndex` 方法来查找列表中的元素[^2]: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { // 创建一个包含多个对象的列表 List<Person> people = new List<Person> { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 30 }, new Person { Name = "Charlie", Age = 34 }, new Person { Name = "Diana", Age = 29 } }; // 示例 1: 查找年龄为 34 的人的索引 int indexAge34 = people.FindIndex(person => person.Age == 34); Console.WriteLine($"索引: {indexAge34}, 名字: {people[indexAge34].Name}"); // 示例 2: 从索引 2 开始查找名字为 "Diana" 的人 int indexFrom2 = people.FindIndex(2, person => person.Name == "Diana"); Console.WriteLine($"从索引 2 开始查找的结果: {indexFrom2}, 名字: {people[indexFrom2].Name}"); // 示例 3: 在索引 1 到索引 2 的范围内查找年龄大于 28 的人 int indexInRange = people.FindIndex(1, 2, person => person.Age > 28); if (indexInRange != -1) { Console.WriteLine($"在指定范围内找到的索引: {indexInRange}, 名字: {people[indexInRange].Name}"); } else { Console.WriteLine("在指定范围内未找到符合条件的元素"); } } } // 定义一个简单的类表示人员信息 class Person { public string Name { get; set; } public int Age { get; set; } } ``` #### 代码说明 - **示例 1**:通过 `FindIndex` 方法查找列表中第一个年龄为 34 的人的索引。 - **示例 2**:从索引 2 开始查找列表中名字为 "Diana" 的人的索引。 - **示例 3**:在索引 1 到索引 2 的范围内查找年龄大于 28 的人的索引。 如果找不到符合条件的元素,`FindIndex` 方法将返回 `-1`[^2]。 --- ### 注意事项 - `FindIndex` 方法需要提供一个谓词(Predicate),即一个返回布尔值的函数,用于定义查找条件。 - 如果列表为空或没有满足条件的元素,则返回 `-1`。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值