Enumerable.All<TSource> Método

Definición

Determina si todos los elementos de una secuencia satisfacen una condición.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static bool All(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static bool All<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member All : seq<'Source> * Func<'Source, bool> -> bool
<Extension()>
Public Function All(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As Boolean

Parámetros de tipo

TSource

Tipo de los elementos de source.

Parámetros

source
IEnumerable<TSource>

IEnumerable<T> que contiene los elementos a los que se va a aplicar el predicado.

predicate
Func<TSource,Boolean>

Función para probar cada elemento de una condición.

Devoluciones

Boolean

true si todos los elementos de la secuencia de origen pasan la prueba del predicado especificado o si la secuencia está vacía; de lo contrario, false.

Excepciones

source o predicate es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar All para determinar si todos los elementos de una secuencia cumplen una condición. La variable allStartWithB es true si todos los nombres de mascotas comienzan por "B" o si la pets matriz está vacía.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void AllEx()
{
    // Create an array of Pets.
    Pet[] pets = { new Pet { Name="Barley", Age=10 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=6 } };

    // Determine whether all pet names
    // in the array start with 'B'.
    bool allStartWithB = pets.All(pet =>
                                      pet.Name.StartsWith("B"));

    Console.WriteLine(
        "{0} pet names start with 'B'.",
        allStartWithB ? "All" : "Not all");
}

// This code produces the following output:
//
//  Not all pet names start with 'B'.
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Sub AllEx()
    ' Create an array of Pets.
    Dim pets() As Pet =
{New Pet With {.Name = "Barley", .Age = 2},
 New Pet With {.Name = "Boots", .Age = 4},
 New Pet With {.Name = "Whiskers", .Age = 7}}

    ' Determine whether all pet names in the array start with "B".
    Dim allNames As Boolean =
pets.All(Function(ByVal pet) pet.Name.StartsWith("B"))

    ' Display the output.
    Dim text As String = IIf(allNames, "All", "Not all")
    Console.WriteLine($"{text} pet names start with 'B'.")
End Sub

' This code produces the following output:
'
' Not all pet names start with 'B'.

El valor booleano que devuelve el All método se usa normalmente en el predicado de una where cláusula (Where cláusula en Visual Basic) o en una llamada directa al Where método . En el ejemplo siguiente se muestra este uso del All método .

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AllEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { new Pet { Name = "Belle", Age = 8} }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have pets that are all older than 5.
    IEnumerable<string> names = from person in people
                                where person.Pets.All(pet => pet.Age > 5)
                                select person.LastName;

    foreach (string name in names)
    {
        Console.WriteLine(name);
    }

    /* This code produces the following output:
     *
     * Haas
     * Antebi
     */
}
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Structure Person
    Public LastName As String
    Public Pets() As Pet
End Structure

Sub AllEx2()
    Dim people As New List(Of Person)(New Person() _
{New Person With {.LastName = "Haas",
                  .Pets = New Pet() {New Pet With {.Name = "Barley", .Age = 10},
                                     New Pet With {.Name = "Boots", .Age = 14},
                                     New Pet With {.Name = "Whiskers", .Age = 6}}},
  New Person With {.LastName = "Fakhouri",
                   .Pets = New Pet() {New Pet With {.Name = "Snowball", .Age = 1}}},
  New Person With {.LastName = "Antebi",
                   .Pets = New Pet() {New Pet With {.Name = "Belle", .Age = 8}}},
  New Person With {.LastName = "Philips",
                   .Pets = New Pet() {New Pet With {.Name = "Sweetie", .Age = 2},
                                      New Pet With {.Name = "Rover", .Age = 13}}}})

    ' Determine which people have pets that are all older than 5.
    Dim names = From person In people
                Where person.Pets.All(Function(pet) pet.Age > 5)
                Select person.LastName

    For Each name As String In names
        Console.WriteLine(name)
    Next

    ' This code produces the following output:
    '
    ' Haas
    ' Antebi

End Sub

Comentarios

Nota

Este método no devuelve todos los elementos de una colección. En su lugar, determina si todos los elementos de una colección cumplen una condición.

La enumeración de source se detiene en cuanto se puede determinar el resultado.

En Visual Basic sintaxis de expresión de consulta, una Aggregate Into All() cláusula se traduce en una invocación de All.

Se aplica a

Consulte también