C# | Cómo obtener todos los elementos de una Lista que coincidan con las condiciones especificadas por el predicado – Part 1

El método List<T>.FindAll(Predicate<T>) se usa para obtener todos los elementos que coinciden con las condiciones definidas por el predicado especificado.

Propiedades de la lista:

  • Es diferente de las arrays. Una lista se puede cambiar de tamaño dinámicamente, pero las arrays no.
  • La clase de lista puede aceptar nulo como un valor válido para los tipos de referencia y también permite elementos duplicados.
  • Si el recuento se vuelve igual a la capacidad , la capacidad de la lista aumenta automáticamente al reasignar la array interna. Los elementos existentes se copiarán en la nueva array antes de agregar el nuevo elemento.

Sintaxis:

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

Parámetro:

match: Es el delegado de Predicate<T> que define las condiciones de los elementos que se van a buscar.

Valor devuelto: este método devuelve una List<T> que contiene todos los elementos que coinciden con las condiciones definidas por el predicado especificado; de lo contrario, devuelve una List<T> vacía.

Excepción: este método dará ArgumentNullException si la coincidencia es nula.

Los siguientes programas ilustran el uso del método List<T>.FindAll(Predicate<T>):

Ejemplo 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<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);
        }
    }
}

Producción:

Elements Present in List:

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

Ejemplo 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<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");
        }
    }
}

Producción:

Elements Present in List:

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

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *