Queryable.TakeWhile Metod

Definition

Returnerar element från en sekvens så länge ett angivet villkor är sant och hoppar sedan över de återstående elementen.

Överlagringar

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

Returnerar element från en sekvens så länge ett angivet villkor är sant. Elementets index används i logiken i predikatfunktionen.

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

Returnerar element från en sekvens så länge ett angivet villkor är sant.

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

Returnerar element från en sekvens så länge ett angivet villkor är sant. Elementets index används i logiken i predikatfunktionen.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IQueryable<TSource>

Sekvensen som elementen ska returneras från.

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

En funktion för att testa varje element för ett villkor. den andra parametern för funktionen representerar indexet för elementet i källsekvensen.

Returer

IQueryable<TSource>

En IQueryable<T> som innehåller element från indatasekvensen som inträffar innan det element där testet som anges av predicate inte längre godkänns.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) för att returnera element från början av en sekvens så länge ett villkor som använder elementets index är sant.

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

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 TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) genererar en MethodCallExpression som representerar att anropa TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery(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 TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det gäller predicate för varje element i source tills det hittar ett element som predicate returnerar false. Den returnerar alla element fram till den punkten. Indexet för varje källelement anges som det andra argumentet till predicate.

Gäller för

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

Returnerar element från en sekvens så länge ett angivet villkor är sant.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IQueryable<TSource>

Sekvensen som elementen ska returneras från.

predicate
Expression<Func<TSource,Boolean>>

En funktion för att testa varje element för ett villkor.

Returer

IQueryable<TSource>

En IQueryable<T> som innehåller element från indatasekvensen som inträffar innan det element där testet som anges av predicate inte längre godkänns.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) för att returnera element från början av en sekvens så länge ett villkor är sant.

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

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 TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) genererar en MethodCallExpression som representerar att anropa TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery(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 TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det gäller predicate för varje element i source tills det hittar ett element som predicate returnerar false. Den returnerar alla element fram till den punkten.

Gäller för