(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Queryable.TakeWhile<TSource>-Methode (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.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IQueryable<TSource> TakeWhile<TSource>(
	this IQueryable<TSource> source,
	Expression<Func<TSource, int, bool>> predicate
)

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
Typ: System.Linq.IQueryable<TSource>
Die Sequenz, aus der Elemente zurückgegeben werden sollen.
predicate
Typ: System.Linq.Expressions.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.

Rückgabewert

Typ: System.Linq.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.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IQueryable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source oder predicate ist null.

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T, TResult>-Typen ist. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, und dieser wird zu einer Expression<TDelegate> kompiliert.

Die TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource, Int32, Boolean>>)-Methode generiert einen MethodCallExpression, der den Aufruf von TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource, Int32, Boolean>>) durch sich selbst als konstruierte generische Methode darstellt. Anschließend übergibt sie die MethodCallExpression an die CreateQuery(Expression)-Methode des IQueryProvider, der von der Provider-Eigenschaft des source-Parameters dargestellt wird.

Das Abfrageverhalten, das durch das Ausführen einer Ausdrucksbaumstruktur auftritt, die einen Aufruf von TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource, Int32, Boolean>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab. Es wird erwartet, dass predicate auf jedes Element in source bis zu einem Element angewendet wird, für das predicatefalse zurückgibt. Es werden alle Elemente bis zu diesem Punkt zurückgegeben. Der Index der einzelnen Quellelemente wird als zweites Argument für predicate bereitgestellt.

Im folgenden Codebeispiel wird gezeigt, wie mit TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource, Int32, Boolean>>) Elemente ab dem Anfang einer Sequenz zurückgegeben werden, solange eine Bedingung, in der der Index des Elements verwendet wird, true 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
            */



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft