Queryable.All<TSource> Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avgör om alla element i en sekvens uppfyller ett villkor.
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
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IQueryable<TSource>
En sekvens vars element ska testas för ett villkor.
- predicate
- Expression<Func<TSource,Boolean>>
En funktion för att testa varje element för ett villkor.
Returer
trueom varje element i källsekvensen klarar testet i det angivna predikatet eller om sekvensen är tom; annars . false
Undantag
source eller predicate är null.
Exempel
Följande kodexempel visar hur du använder All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) för att avgöra om alla element i en sekvens uppfyller ett villkor.
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'.
Det booleska värde som metoden All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) returnerar används vanligtvis i predikatet för en where-sats (Where-sats i Visual Basic) eller ett direktanrop till metoden Where. I följande exempel visas den här användningen av All metoden.
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
Kommentarer
Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.
Metoden All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) genererar en MethodCallExpression som representerar att anropa All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till Execute<TResult>(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource.MethodCallExpression
Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) körs beror på implementeringen av source parameterns typ. Det förväntade beteendet är att det avgör om alla element i source uppfyller villkoret i predicate.