📅  最后修改于: 2023-12-03 15:30:17.656000             🧑  作者: Mango
在 C# 中,List<T>
是一个非常常见的数据集合,我们经常需要从这个集合中筛选出满足指定条件的元素。此时,我们可以使用 List<T>.FindAll()
方法来实现。
List<T>.FindAll()
方法是一个泛型方法,用于从列表中筛选出满足指定条件的元素,然后返回一个新的列表。其方法签名如下:
public List<T> FindAll(Predicate<T> match)
其中,Predicate<T>
是一个委托类型,表示一个接受一个参数的方法,返回一个布尔值,用于判断指定元素是否符合条件。
该方法遍历整个列表,对于每个元素调用指定的委托方法,如果该方法返回 true
,则将该元素加入新的列表中。
假设我们有一个 Person
类,它有两个属性:string Name
和 int 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
的人。