C# | How to get all elements of a List that match the conditions specified by the predicate - GeeksforGeeks

01 Feb, 2019
List<T>.FindAll(Predicate<T>) Method is used to get all the elements that match the conditions defined by the specified predicate.
Properties of List:
It is different from the arrays. A list can be resized dynamically but arrays cannot.
List class can accept null as a valid value for reference types and it also allows duplicate elements.
If the Count becomes equals to Capacity then the capacity of the List increases automatically by reallocating the internal array. The existing elements will be copied to the new array before the addition of the new element.
Syntax:
public System.Collections.Generic.List<T> FindAll (Predicate<T> match);
Parameter:
match: It is the Predicate<T> delegate that defines the conditions of the elements which is to be searched.
Return value: This method returns a List<T> containing all the elements that match the conditions defined by the specified predicate otherwise it returns an empty List<T>.
Exception: This method will give ArgumentNullException if the match is null.
Below programs illustrate the use of List<T>.FindAll(Predicate<T>) Method:
Example 1:
// C# Program to get all the element that// match the specified conditions defined// by the predicateusing 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<T> of Integers        List<int> firstlist = new List<int>();          // 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<int> Result = new List<int>(firstlist.FindAll(isEven));          foreach(int i in Result)        {            Console.WriteLine(i);        }    }}
Output:
Elements Present in List:

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

Example 2:
// C# Program to get all the element that// match the specified conditions defined// by the predicateusing 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<T> of Integers        List<int> firstlist = new List<int>();          // 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<int> Result = new List<int>(firstlist.FindAll(isEven));          // checking for the resultant        // Elements in the List        if ((Result.Count) == 0) {            Console.WriteLine("No Match Found");        }    }}
Output:
Elements Present in List:

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

Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.findall?view=netframework-4.7.2
CSharp-Collections-Namespace
CSharp-Generic-List
CSharp-Generic-Namespace
CSharp-method
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C# | Delegates
Top 50 C# Interview Questions & Answers
Introduction to .NET Framework
C# | Constructors
Extension Method in C#
C# | Class and Object
C# | Abstract Classes
Common Language Runtime (CLR) in C#
C# | Encapsulation
C# | Method Overloading