Enumerable.Select Methode

Definition

Projiziert jedes Element einer Sequenz in ein neues Format.

Überlädt

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

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

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

Projiziert jedes Element einer Sequenz in ein neues Format.

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

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

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 zurückgegebenen Werts.

Parameter

source
IEnumerable<TSource>

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

selector
Func<TSource,Int32,TResult>

Eine Transformierenfunktion, 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>, dessen Elemente das Ergebnis des Aufrufs einer Transformationsfunktion für jedes Element von source sind

Ausnahmen

source oder selector ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie verwenden Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) , um eine Sequenz von Werten zu projizieren und den Index jedes Elements zu 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 von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch direktes Aufrufen der GetEnumerator -Methode oder mithilfe foreach von in C# oder For Each in Visual Basic aufgezählt wird.

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

Für diese Projektionsmethode ist die Transformationsfunktion erforderlich, selectorum einen Wert für jeden Wert in der Quellsequenz sourcezu erzeugen. Wenn selector ein Wert zurückgegeben wird, der selbst eine Auflistung ist, liegt es am Consumer, die Teilsequencen manuell zu durchlaufen. In einer solchen Situation kann es für Ihre Abfrage besser sein, eine einzelne zusammengeknabelte Sequenz von Werten zurückzugeben. Um dies zu erreichen, verwenden Sie die SelectMany -Methode anstelle von Select. Obwohl SelectMany sie ähnlich funktioniert wie Select, unterscheidet sie sich darin, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann um SelectMany erweitert wird, bevor sie zurückgegeben wird.

Gilt für:

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

Projiziert jedes Element einer Sequenz in ein neues Format.

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 zurückgegebenen Werts.

Parameter

source
IEnumerable<TSource>

Eine Sequenz 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>, dessen Elemente das Ergebnis des Aufrufs einer Transformationsfunktion für jedes Element von source sind

Ausnahmen

source oder selector ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie verwenden Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) , um eine Sequenz von Werten zu projizieren.

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 von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch direktes Aufrufen der GetEnumerator -Methode oder mithilfe foreach von in C# oder For Each in Visual Basic aufgezählt wird.

Für diese Projektionsmethode ist die Transformationsfunktion erforderlich, selectorum einen Wert für jeden Wert in der Quellsequenz sourcezu erzeugen. Wenn selector ein Wert zurückgegeben wird, der selbst eine Auflistung ist, liegt es am Consumer, die Teilsequencen manuell zu durchlaufen. In einer solchen Situation kann es für Ihre Abfrage besser sein, eine einzelne zusammengeknabelte Sequenz von Werten zurückzugeben. Um dies zu erreichen, verwenden Sie die SelectMany -Methode anstelle von Select. Obwohl SelectMany sie ähnlich funktioniert wie Select, unterscheidet sie sich darin, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann um SelectMany erweitert wird, bevor sie zurückgegeben wird.

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

Weitere Informationen

Gilt für: