Queryable.All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Método

Definição

Determina se todos os elementos de uma sequência atendem a uma condição.Determines whether all the elements of a sequence satisfy a condition.

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

Parâmetros de tipo

TSource

O tipo dos elementos de source.The type of the elements of source.

Parâmetros

source
IQueryable<TSource>

A sequência cujos elementos testar quanto a uma condição.A sequence whose elements to test for a condition.

predicate
Expression<Func<TSource,Boolean>>

Uma função para testar cada elemento em relação a uma condição.A function to test each element for a condition.

Retornos

Boolean

true se todos os elementos da sequência de origem passarem no teste no predicado especificado ou se a sequência for vazia; caso contrário, false.true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false.

Exceções

source ou predicate é null.source or predicate is null.

Exemplos

O exemplo de código a seguir demonstra como usar o All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) para determinar se todos os elementos em uma sequência atendem a uma condição.The following code example demonstrates how to use All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) to determine whether all the elements in a sequence satisfy a condition.

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

public static void AllEx1()
{
    // 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.AsQueryable().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'.

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

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

    MsgBox(String.Format( _
        "{0} pet names start with 'B'.", _
        IIf(allStartWithB, "All", "Not all")))
End Sub

Public Structure Pet
    Dim Name As String
    Dim Age As Integer
End Structure

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

O valor booliano que o All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) método retorna normalmente é usado no predicado de uma where cláusula ( Where cláusula em Visual Basic) ou uma chamada direta para o Where método.The Boolean value that the All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) method returns is typically used in the predicate of a where clause (Where clause in Visual Basic) or a direct call to the Where method. O exemplo a seguir demonstra esse uso do All método.The following example demonstrates this use of the All method.

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.AsQueryable().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.AsQueryable().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

Comentários

Esse método tem pelo menos um parâmetro do tipo Expression<TDelegate> cujo argumento de tipo é um dos Func<T,TResult> tipos.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Para esses parâmetros, você pode passar uma expressão lambda e ela será compilada para um Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

O All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) método gera um MethodCallExpression que representa a chamada a All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) si próprio como um método genérico construído.The All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) method generates a MethodCallExpression that represents calling All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) itself as a constructed generic method. Em seguida, ele passa o MethodCallExpression para o Execute<TResult>(Expression) método do IQueryProvider representado pela Provider Propriedade do source parâmetro.It then passes the MethodCallExpression to the Execute<TResult>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

O comportamento da consulta que ocorre como resultado da execução de uma árvore de expressão que representa All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) a chamada depende da implementação do source tipo do parâmetro.The query behavior that occurs as a result of executing an expression tree that represents calling All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) depends on the implementation of the source parameter's type. O comportamento esperado é que ele determina se todos os elementos no source atendem à condição em predicate .The expected behavior is that it determines if all the elements in source satisfy the condition in predicate.

Aplica-se a