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

📅  最后修改于: 2021-05-29 13:59:24             🧑  作者: Mango

List .FindAll(Predicate )方法用于获取与指定谓词定义的条件匹配的所有元素。

列表的属性:

  • 它与数组不同。列表可以动态调整大小,但数组则不能。
  • 列表类可以接受null作为引用类型的有效值,并且还允许重复的元素。
  • 如果计数通过重新分配内部数组自动变成等于容量则的列表的容量增加。在添加新元素之前,现有元素将被复制到新数组。

句法:

public System.Collections.Generic.List FindAll (Predicate match);

范围:

返回值:该方法返回一个List ,其中包含与指定谓词定义的条件匹配的所有元素,否则它返回一个空的List

异常:如果匹配为null,则此方法将提供ArgumentNullException。

下面的程序说明了List .FindAll(Predicate )方法的用法:

范例1:

// C# Program to get all the element that
// match the specified conditions defined
// by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
  
class Geeks {
  
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
  
    // Main Method
    public static void Main(String[] args)
    {
  
        // Creating an List of Integers
        List firstlist = new List();
  
        // Adding elements to List
        firstlist.Add(2);
        firstlist.Add(4);
        firstlist.Add(7);
        firstlist.Add(2);
        firstlist.Add(3);
        firstlist.Add(2);
        firstlist.Add(4);
  
        Console.WriteLine("Elements Present in List:\n");
  
        // Displaying the elements of List
        foreach(int k in firstlist)
        {
            Console.WriteLine(k);
        }
  
        Console.WriteLine(" ");
  
        Console.Write("Elements that Match: \n");
  
        // Will give the List of Elements that
        // match the conditions defined by predicate
        List Result = new List(firstlist.FindAll(isEven));
  
        foreach(int i in Result)
        {
            Console.WriteLine(i);
        }
    }
}

输出:

Elements Present in List:

2
4
7
2
3
2
4
 
Elements that Match: 
2
4
2
2
4

范例2:

// C# Program to get all the element that
// match the specified conditions defined
// by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
  
class Geeks {
  
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
  
    // Main Method
    public static void Main(String[] args)
    {
  
        // Creating an List of Integers
        List firstlist = new List();
  
        // Adding elements to List
        firstlist.Add(17);
        firstlist.Add(77);
        firstlist.Add(15);
        firstlist.Add(9);
        firstlist.Add(3);
        firstlist.Add(7);
        firstlist.Add(57);
  
        Console.WriteLine("Elements Present in List:\n");
  
        // Displaying the elements of List
        foreach(int k in firstlist)
        {
            Console.WriteLine(k);
        }
  
        Console.WriteLine(" ");
  
        Console.Write("Result is: ");
  
        // Will give the List of Elements that
        // match the conditions defined by predicate
        // Here no even number found in the list
        // so it wil return an empty list
        List Result = new List(firstlist.FindAll(isEven));
  
        // checking for the resultant
        // Elements in the List
        if ((Result.Count) == 0) {
            Console.WriteLine("No Match Found");
        }
    }
}

输出:

Elements Present in List:

17
77
15
9
3
7
57
 
Result is: No Match Found

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.list-1.findall?view=netframework-4.7.2