Queryable.All<TSource> Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Détermine si tous les éléments d’une séquence répondent à une 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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
Paramètres de type
- TSource
Type des éléments de source.
Paramètres
- source
- IQueryable<TSource>
Séquence dont les éléments à tester pour une condition.
- predicate
- Expression<Func<TSource,Boolean>>
Fonction permettant de tester chaque élément pour une condition.
Retours
true si chaque élément de la séquence source réussit le test dans le prédicat spécifié, ou si la séquence est vide ; sinon, false.
- Attributs
Exceptions
source ou predicate est null.
Exemples
L’exemple de code suivant montre comment utiliser All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) pour déterminer si tous les éléments d’une séquence répondent à une 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'.
La valeur booléenne retournée par la All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) méthode est généralement utilisée dans le prédicat d’une where clause (Where clause en Visual Basic) ou un appel direct à la Where méthode. L’exemple suivant illustre cette utilisation de la All méthode.
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
Remarques
Cette méthode a au moins un paramètre de type Expression<TDelegate> dont l’argument de type est l’un des Func<T,TResult> types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée à un Expression<TDelegate>.
La All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) méthode génère un qui représente l’appel MethodCallExpressionAll<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) lui-même en tant que méthode générique construite. Il passe ensuite la MethodCallExpressionExecute<TResult>(Expression) méthode de l’objet IQueryProvider représenté par la Provider propriété du source paramètre.
Le comportement de requête qui se produit suite à l’exécution d’une arborescence d’expressions qui représente l’appel All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dépend de l’implémentation du source type du paramètre. Le comportement attendu est qu’il détermine si tous les éléments en source respectent la condition dans predicate.