(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

Enumerable.Select<TSource, TResult>-Methode (IEnumerable<TSource>, Func<TSource, Int32, TResult>)

Projiziert jedes Element einer Sequenz in ein neues Format, indem der Index des Elements integriert wird.

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

public static IEnumerable<TResult> Select<TSource, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, int, TResult> selector
)

Typparameter

TSource

Der Typ der Elemente von source.

TResult

Der Typ des von selector zurückgegebenen Werts.

Parameter

source
Typ: System.Collections.Generic.IEnumerable<TSource>
Eine Sequenz von Werten, für die eine Transformationsfunktion aufgerufen werden soll.
selector
Typ: System.Func<TSource, Int32, TResult>
Eine Transformationsfunktion, die auf jedes Quellelement angewendet werden soll. Der zweite Parameter der Funktion stellt den Index des Quellelements dar.

Rückgabewert

Typ: System.Collections.Generic.IEnumerable<TResult>
Ein IEnumerable<T>, dessen Elemente das Ergebnis des Aufrufs einer Transformationsfunktion für jedes Element von source sind.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IEnumerable<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 selector ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Der Wert der sofortigen Rückgabe ist ein Objekt, in dem alle zum Ausführen der Aktion erforderlichen Informationen gespeichert werden. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch den direkten Aufruf der zugehörigen GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgelistet wird.

Das erste Argument für selector stellt das zu verarbeitende Element dar. Das zweite Argument für selector stellt den nullbasierten Index dieses Elements in der Quellsequenz dar. Dies kann sinnvoll sein, wenn die Elemente in einer bekannten Reihenfolge angeordnet sind und sie beispielsweise eine Aktion für ein Element an einem bestimmten Index ausführen möchten. Dies kann auch von Vorteil sein, wenn Sie den Index eines oder mehrerer Elemente abrufen möchten.

Für diese Projektionsmethode ist die Transformationsfunktion selector erforderlich, um für jeden Wert in der Quellsequenz source einen Wert zu erzeugen. Wenn selector einen Wert zurückgibt, der selbst eine Auflistung ist, muss der Consumer die Untersequenzen manuell durchlaufen. In einer solchen Situation sollte die Abfrage besser eine einzelne zusammengefügte Sequenz von Werten zurückgeben. Verwenden Sie zu diesem Zweck anstelle von Select die SelectMany-Methode. Zwar ähnelt die Funktionsweise von SelectMany der Funktionsweise von Select, doch gibt ihre Transformationsfunktion eine Auflistung zurück, die von SelectMany erweitert wird, bevor sie zurückgegeben wird.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe von Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, TResult>) eine Sequenz von Werten projizieren und den Index jedes Elements verwenden.


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

            var query =
                fruits.Select((fruit, index) =>
                                  new { index, str = fruit.Substring(0, index) });

            foreach (var obj in query)
            {
                Console.WriteLine("{0}", obj);
            }

            /*
             This code produces the following output:

             {index=0, str=}
             {index=1, str=b}
             {index=2, str=ma}
             {index=3, str=ora}
             {index=4, str=pass}
             {index=5, str=grape}
            */



.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