Queryable.SkipWhile Methode

Definitie

Omzeilt elementen in een reeks zolang een opgegeven voorwaarde waar is en retourneert vervolgens de resterende elementen.

Overloads

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

Omzeilt elementen in een reeks zolang een opgegeven voorwaarde waar is en retourneert vervolgens de resterende elementen.

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

Omzeilt elementen in een reeks zolang een opgegeven voorwaarde waar is en retourneert vervolgens de resterende elementen. De index van het element wordt gebruikt in de logica van de predicaatfunctie.

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

Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs

Omzeilt elementen in een reeks zolang een opgegeven voorwaarde waar is en retourneert vervolgens de resterende elementen.

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

Type parameters

TSource

Het type van de elementen van source.

Parameters

source
IQueryable<TSource>

Een IQueryable<T> om elementen van te retourneren.

predicate
Expression<Func<TSource,Boolean>>

Een functie om elk element voor een voorwaarde te testen.

Retouren

IQueryable<TSource>

Een IQueryable<T> die elementen bevat die source beginnen bij het eerste element in de lineaire reeks die niet voldoet aan de test die is opgegeven door predicate.

Kenmerken

Uitzonderingen

source of predicate is null.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) u elementen van een matrix overslaat zolang aan een voorwaarde wordt voldaan.

int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

// Get all grades less than 80 by first
// sorting the grades in descending order and then
// taking all the grades after the first grade
// that is less than 80.
IEnumerable<int> lowerGrades =
    grades.AsQueryable()
    .OrderByDescending(grade => grade)
    .SkipWhile(grade => grade >= 80);

Console.WriteLine("All grades below 80:");
foreach (int grade in lowerGrades)
    Console.WriteLine(grade);

/*
    This code produces the following output:

    All grades below 80:
    70
    59
    56
*/
Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

' Get all grades less than 80 by first  sorting the grades 
' in descending order and then taking all the grades that 
' occur after the first grade that is less than 80.
Dim lowerGrades = grades.AsQueryable() _
    .OrderByDescending(Function(grade) grade) _
    .SkipWhile(Function(grade) grade >= 80)

Dim output As New System.Text.StringBuilder
output.AppendLine("All grades below 80:")
For Each grade As Integer In lowerGrades
    output.AppendLine(grade)
Next

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

' This code produces the following output:

' All grades below 80:
' 70
' 59
' 56

Opmerkingen

Deze methode heeft ten minste één parameter van het type Expression<TDelegate> waarvan het typeargument een van de Func<T,TResult> typen is. Voor deze parameters kunt u een lambda-expressie doorgeven en deze wordt gecompileerd naar een Expression<TDelegate>.

De SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) methode genereert een MethodCallExpression die zichzelf aanroept SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de CreateQuery(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.

Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het van toepassing is op predicate elk element in source totdat er een element wordt gevonden waarvoor predicate onwaar wordt geretourneerd. Dat element en alle resterende elementen worden geretourneerd.

Van toepassing op

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

Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs
Bron:
Queryable.cs

Omzeilt elementen in een reeks zolang een opgegeven voorwaarde waar is en retourneert vervolgens de resterende elementen. De index van het element wordt gebruikt in de logica van de predicaatfunctie.

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

Type parameters

TSource

Het type van de elementen van source.

Parameters

source
IQueryable<TSource>

Een IQueryable<T> om elementen van te retourneren.

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

Een functie om elk element voor een voorwaarde te testen; de tweede parameter van deze functie vertegenwoordigt de index van het bronelement.

Retouren

IQueryable<TSource>

Een IQueryable<T> die elementen bevat die source beginnen bij het eerste element in de lineaire reeks die niet voldoet aan de test die is opgegeven door predicate.

Kenmerken

Uitzonderingen

source of predicate is null.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) u elementen van een matrix kunt overslaan, zolang een voorwaarde die afhankelijk is van de index van het element waar is.

int[] amounts = { 5000, 2500, 9000, 8000,
                    6500, 4000, 1500, 5500 };

// Skip over amounts in the array until the first amount
// that is less than or equal to the product of its
// index in the array and 1000. Take the remaining items.
IEnumerable<int> query =
    amounts.AsQueryable()
    .SkipWhile((amount, index) => amount > index * 1000);

foreach (int amount in query)
    Console.WriteLine(amount);

/*
    This code produces the following output:

    4000
    1500
    5500
*/
Dim amounts() As Integer = {5000, 2500, 9000, 8000, _
                    6500, 4000, 1500, 5500}

' Skip over amounts in the array until the first amount
' that is less than or equal to the product of its
' index in the array and 1000. Take the remaining items.
Dim query = amounts.AsQueryable() _
    .SkipWhile(Function(amount, index) amount > index * 1000)

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

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

' This code produces the following output:

' 4000
' 1500
' 5500

Opmerkingen

Deze methode heeft ten minste één parameter van het type Expression<TDelegate> waarvan het typeargument een van de Func<T,TResult> typen is. Voor deze parameters kunt u een lambda-expressie doorgeven en deze wordt gecompileerd naar een Expression<TDelegate>.

De SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) methode genereert een MethodCallExpression die zichzelf aanroept SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de CreateQuery(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.

Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het van toepassing is op predicate elk element in source totdat er een element wordt gevonden waarvoor predicate onwaar wordt geretourneerd. Dat element en alle resterende elementen worden geretourneerd. De index van elk bronelement wordt opgegeven als het tweede argument voor predicate.

Van toepassing op