Enumerable.Select Methode

Definition

Projiziert jedes Element einer Sequenz in ein neues Formular.

Überlädt

Name Beschreibung
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Projiziert jedes Element einer Sequenz in ein neues Formular, indem er den Index des Elements einbezieht.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Projiziert jedes Element einer Sequenz in ein neues Formular.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs

Projiziert jedes Element einer Sequenz in ein neues Formular, indem er den Index des Elements einbezieht.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,TResult> selector);
static member Select : seq<'Source> * Func<'Source, int, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, Integer, TResult)) As IEnumerable(Of TResult)

Typparameter

TSource

Der Typ der Elemente von source.

TResult

Der Typ des von selector.

Parameter

source
IEnumerable<TSource>

Eine Abfolge von Werten, für die eine Transformationsfunktion aufgerufen werden soll.

selector
Func<TSource,Int32,TResult>

Eine Transformationsfunktion, die auf jedes Quellelement angewendet werden soll; Der zweite Parameter der Funktion stellt den Index des Quellelements dar.

Gibt zurück

IEnumerable<TResult>

Ein IEnumerable<T> Element, dessen Elemente das Ergebnis des Aufrufens der Transformationsfunktion für jedes Element von sourcesind.

Ausnahmen

source oder selector ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) zum Projizieren über eine Folge von Werten verwendet und den Index der einzelnen Elemente 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 }
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Project each item in the array to an anonymous type
' that stores the item's index in the array and
' a substring of each item whose length is equal
' to the index position in the original array.
Dim query =
fruits.Select(Function(fruit, index) _
                  New With {index, .Str = fruit.Substring(0, index)})

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

' Display the output.
Console.WriteLine(output.ToString())

' 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 }

Hinweise

Diese Methode wird mithilfe der verzögerten Ausführung implementiert. Der sofortige Rückgabewert ist ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich sind. Die durch diese Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt aufgezählt wird, indem die GetEnumerator-Methode direkt oder mithilfe von foreach in C# oder For Each in Visual Basic aufgerufen wird.

Das erste Argument, das selector das zu verarbeitende Element darstellt. Das zweite Argument, das selector den nullbasierten Index dieses Elements in der Quellsequenz darstellt. Dies kann hilfreich sein, wenn sich die Elemente in einer bekannten Reihenfolge befinden und Sie beispielsweise etwas mit einem Element in einem bestimmten Index ausführen möchten. Es kann auch hilfreich sein, wenn Sie den Index eines oder mehrerer Elemente abrufen möchten.

Diese Projektionsmethode erfordert die Transformationsfunktion, selectorum einen Wert für jeden Wert in der Quellsequenz zu erzeugen. source Wenn selector ein Wert zurückgegeben wird, der selbst eine Auflistung ist, liegt es an der Consumer, die Untermenge manuell zu durchlaufen. In einer solchen Situation kann es für Ihre Abfrage besser sein, eine einzelne kooperierte Abfolge von Werten zurückzugeben. Um dies zu erreichen, verwenden Sie die SelectMany Methode anstelle von Select. Die SelectMany Transformationsfunktion unterscheidet sich zwar ähnlich davon Select, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann erweitert SelectMany wird, bevor sie zurückgegeben wird.

Gilt für:

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs
Quelle:
Select.cs

Projiziert jedes Element einer Sequenz in ein neues Formular.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TResult> selector);
static member Select : seq<'Source> * Func<'Source, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, TResult)) As IEnumerable(Of TResult)

Typparameter

TSource

Der Typ der Elemente von source.

TResult

Der Typ des von selector.

Parameter

source
IEnumerable<TSource>

Eine Abfolge von Werten, für die eine Transformationsfunktion aufgerufen werden soll.

selector
Func<TSource,TResult>

Eine Transformationsfunktion, die auf jedes Element angewendet werden soll.

Gibt zurück

IEnumerable<TResult>

Ein IEnumerable<T> Element, dessen Elemente das Ergebnis des Aufrufens der Transformationsfunktion für jedes Element von sourcesind.

Ausnahmen

source oder selector ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie zum Projizieren über eine Abfolge von Werten verwendet Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) werden.

IEnumerable<int> squares =
    Enumerable.Range(1, 10).Select(x => x * x);

foreach (int num in squares)
{
    Console.WriteLine(num);
}
/*
 This code produces the following output:

 1
 4
 9
 16
 25
 36
 49
 64
 81
 100
*/
' Create a collection of sequential integers
' from 1 to 10 and project their squares.
Dim squares As IEnumerable(Of Integer) =
Enumerable.Range(1, 10).Select(Function(x) x * x)

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

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' 1
' 4
' 9
' 16
' 25
' 36
' 49
' 64
' 81
' 100

Hinweise

Diese Methode wird mithilfe der verzögerten Ausführung implementiert. Der sofortige Rückgabewert ist ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich sind. Die durch diese Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt aufgezählt wird, indem die GetEnumerator-Methode direkt oder mithilfe von foreach in C# oder For Each in Visual Basic aufgerufen wird.

Diese Projektionsmethode erfordert die Transformationsfunktion, selectorum einen Wert für jeden Wert in der Quellsequenz zu erzeugen. source Wenn selector ein Wert zurückgegeben wird, der selbst eine Auflistung ist, liegt es an der Consumer, die Untermenge manuell zu durchlaufen. In einer solchen Situation kann es für Ihre Abfrage besser sein, eine einzelne kooperierte Abfolge von Werten zurückzugeben. Um dies zu erreichen, verwenden Sie die SelectMany Methode anstelle von Select. Die SelectMany Transformationsfunktion unterscheidet sich zwar ähnlich davon Select, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann erweitert SelectMany wird, bevor sie zurückgegeben wird.

In der Abfrageausdruckssyntax wird eine select (C#) oder Select (Visual Basic) in einen Aufruf von Select übersetzt.

Weitere Informationen

Gilt für: