Queryable.All<TSource> Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina se tutti gli elementi di una sequenza soddisfano una condizione.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IQueryable<TSource>
Una sequenza i cui elementi sono da testare rispetto a una condizione.
- predicate
- Expression<Func<TSource,Boolean>>
Funzione per testare ogni elemento rispetto a una condizione.
Restituisce
true
se ogni elemento della sequenza di origine supera il test per il predicato specificato o se la sequenza è vuota; in caso contrario, false
.
Eccezioni
source
o predicate
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) per determinare se tutti gli elementi di una sequenza soddisfano una condizione.
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'.
Il valore booleano restituito dal All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) metodo viene in genere usato nel predicato di una where
clausola (Where
clausola in Visual Basic) o una chiamata diretta al Where metodo . Nell'esempio seguente viene illustrato questo uso del All
metodo.
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
Commenti
Questo metodo ha almeno un parametro di tipo il Func<T,TResult> cui argomento di tipo Expression<TDelegate> è uno dei tipi. Per questi parametri, è possibile passare un'espressione lambda e verrà compilata in un Expression<TDelegate>oggetto .
Il All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) metodo genera un MethodCallExpression oggetto che rappresenta la chiamata All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) stessa come metodo generico costruito. Passa quindi l'oggetto MethodCallExpression al Execute<TResult>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source
parametro.
Il comportamento della query che si verifica come risultato dell'esecuzione di un albero delle espressioni che rappresenta la chiamata All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dipende dall'implementazione del source
tipo del parametro. Il comportamento previsto è che determina se tutti gli elementi in source
soddisfano la condizione in predicate
.