Queryable.TakeWhile Methode

Definition

Gibt Elemente aus einer Sequenz zurück, solange eine angegebene Bedingung TRUE ist, und überspringt dann die übrigen Elemente

Überlädt

TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Gibt Elemente aus einer Sequenz zurück, solange eine angegebene Bedingung TRUE ist

TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>)

Gibt Elemente aus einer Sequenz zurück, solange eine angegebene Bedingung TRUE ist In der Logik der Prädikatfunktion wird der Index des Elements verwendet.

TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Gibt Elemente aus einer Sequenz zurück, solange eine angegebene Bedingung TRUE ist

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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Die Sequenz, aus der Elemente zurückgegeben werden sollen.

predicate
Expression<Func<TSource,Boolean>>

Eine Funktion, mit der jedes Element auf eine Bedingung überprüft wird.

Gibt zurück

IQueryable<TSource>

Ein IQueryable<T>, das Elemente aus der Eingabesequenz enthält, die vor dem Element auftreten, bei dem die von predicate angegebene Überprüfung nicht mehr erfolgreich ist.

Ausnahmen

source oder predicate ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Elemente vom Anfang einer Sequenz zurückgegeben werden, solange eine Bedingung wahr ist.

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

// Take strings from the array until a string
// that is equal to "orange" is found.
IEnumerable<string> query =
    fruits.AsQueryable()
    .TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);

foreach (string fruit in query)
    Console.WriteLine(fruit);

/*
    This code produces the following output:

    apple
    banana
    mango
*/
Dim fruits() As String = {"apple", "banana", "mango", "orange", _
                      "passionfruit", "grape"}

' Take strings from the array until a string
' that is equal to "orange" is found.
Dim query = fruits.AsQueryable() _
    .TakeWhile(Function(fruit) String.Compare("orange", fruit, True) <> 0)

Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next

' Display the output.
MsgBox(output.ToString())

'This code produces the following output:

'apple
'banana
'mango

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.

Die TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Methode generiert eine MethodCallExpression , die das Aufrufen TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery(Expression) Provider Eigenschaft des source Parameters übergeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) des source Parameters ab. Das erwartete Verhalten besteht darin, dass es für jedes Element giltpredicate, bis es ein Element findet, für das predicate zurückgegeben wirdfalse.source Es gibt alle Elemente bis zu diesem Punkt zurück.

Gilt für

TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>)

Gibt Elemente aus einer Sequenz zurück, solange eine angegebene Bedingung TRUE ist In der Logik der Prädikatfunktion wird der Index des Elements verwendet.

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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
IQueryable<TSource>

Die Sequenz, aus der Elemente zurückgegeben werden sollen.

predicate
Expression<Func<TSource,Int32,Boolean>>

Eine Funktion zum Überprüfen jedes Elements auf eine Bedingung. Der zweite Parameter der Funktion stellt den Index des Elements in der Quellsequenz dar.

Gibt zurück

IQueryable<TSource>

Ein IQueryable<T>, das Elemente aus der Eingabesequenz enthält, die vor dem Element auftreten, bei dem die von predicate angegebene Überprüfung nicht mehr erfolgreich ist.

Ausnahmen

source oder predicate ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) Elemente vom Anfang einer Sequenz zurückgegeben werden, solange eine Bedingung, die den Index des Elements verwendet, wahr ist.

string[] fruits = { "apple", "passionfruit", "banana", "mango",
                      "orange", "blueberry", "grape", "strawberry" };

// Take strings from the array until a string whose length
// is less than its index in the array is found.
IEnumerable<string> query =
    fruits.AsQueryable()
    .TakeWhile((fruit, index) => fruit.Length >= index);

foreach (string fruit in query)
    Console.WriteLine(fruit);

/*
    This code produces the following output:

    apple
    passionfruit
    banana
    mango
    orange
    blueberry
*/
Dim fruits() As String = _
    {"apple", "passionfruit", "banana", "mango", _
     "orange", "blueberry", "grape", "strawberry"}

' Take strings from the array until a string whose length
' is less than its index in the array is found.
Dim query = fruits.AsQueryable() _
    .TakeWhile(Function(fruit, index) fruit.Length >= index)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
MsgBox(output.ToString())

' This code produces the following output:

' apple
' passionfruit
' banana
' mango
' orange
' blueberry

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.

Die TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) Methode generiert eine MethodCallExpression , die das Aufrufen TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery(Expression) Provider Eigenschaft des source Parameters übergeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) des source Parameters ab. Das erwartete Verhalten besteht darin, dass es für jedes Element giltpredicate, bis es ein Element findet, für das predicate zurückgegeben wirdfalse.source Es gibt alle Elemente bis zu diesem Punkt zurück. Der Index jedes Quellelements wird als zweites Argument predicatebereitgestellt.

Gilt für