📌  相关文章
📜  C#|如何获取列表中与谓词指定条件匹配的所有元素(1)

📅  最后修改于: 2023-12-03 15:30:17.656000             🧑  作者: Mango

C# | 如何获取列表中与谓词指定条件匹配的所有元素

在 C# 中,List<T> 是一个非常常见的数据集合,我们经常需要从这个集合中筛选出满足指定条件的元素。此时,我们可以使用 List<T>.FindAll() 方法来实现。

FindAll() 方法

List<T>.FindAll() 方法是一个泛型方法,用于从列表中筛选出满足指定条件的元素,然后返回一个新的列表。其方法签名如下:

public List<T> FindAll(Predicate<T> match)

其中,Predicate<T> 是一个委托类型,表示一个接受一个参数的方法,返回一个布尔值,用于判断指定元素是否符合条件。

该方法遍历整个列表,对于每个元素调用指定的委托方法,如果该方法返回 true,则将该元素加入新的列表中。

示例

假设我们有一个 Person 类,它有两个属性:string Nameint Age。我们有一个 List<Person> 类型的列表,我们希望从中筛选出年龄大于 18 的人。我们可以使用以下代码实现:

List<Person> people = new List<Person>();
// 添加一些 Person 对象

List<Person> adults = people.FindAll(p => p.Age > 18);

在上述代码中,我们使用了 lambda 表达式来创建一个满足条件的委托。lambda 表达式的语法分为左侧和右侧两部分,以箭头(=>)分隔。左侧是输入的参数列表,右侧是表达式主体。在上述代码中,输入参数是 p,表达式主体是 p.Age > 18,表示只有当 Person 对象的年龄大于 18 时为真。

我们调用 people.FindAll() 方法并传入 lambda 表达式,即可得到一个新的 List<Person> 类型的集合,其中仅包含年龄大于 18 的人。

参考文献