Enumerable.Select Methode

Definition

Projiziert jedes Element einer Sequenz in ein neues Format.

Überlädt

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

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 mit über eine Sequenz von Werten projiziert Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) wird.

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 von in Visual C# oder in Visual Basic aufzählt foreach For Each wird.

Diese Projektionsmethode erfordert, dass die Transformationsfunktion selector einen Wert für jeden Wert in der Quellsequenz source erzeugt, . Wenn selector einen Wert zurückgibt, der selbst eine Auflistung ist, liegt es an dem Consumer, die Unterabfragen manuell zu durchlaufen. In einer solchen Situation ist es möglicherweise besser, wenn Ihre Abfrage eine einzelne zusammengeknüpfte Sequenz von Werten zurückgibt. Um dies zu erreichen, verwenden Sie die SelectMany -Methode anstelle von Select . Obwohl ähnlich funktioniert wie SelectMany , unterscheidet es sich Select darin, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann um erweitert wird, SelectMany bevor sie zurückgegeben wird.

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

Siehe auch

Gilt für

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 mit Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) über eine Sequenz von Werten projiziert und der Index der einzelnen Elemente verwendet wird.

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 von in Visual C# oder in Visual Basic aufzählt foreach For Each wird.

Das erste Argument, das selector das zu verarbeitende Element darstellt. Das zweite Argument für selector stellt den nullbasierten Index dieses Elements in der Quellsequenz dar. 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. Dies kann auch nützlich sein, wenn Sie den Index eines oder mehrerer Elemente abrufen möchten.

Diese Projektionsmethode erfordert, dass die Transformationsfunktion selector einen Wert für jeden Wert in der Quellsequenz source erzeugt, . Wenn selector einen Wert zurückgibt, der selbst eine Auflistung ist, liegt es an dem Consumer, die Unterabfragen manuell zu durchlaufen. In einer solchen Situation ist es möglicherweise besser, wenn Ihre Abfrage eine einzelne zusammengeknüpfte Sequenz von Werten zurückgibt. Um dies zu erreichen, verwenden Sie die SelectMany -Methode anstelle von Select . Obwohl ähnlich funktioniert wie SelectMany , unterscheidet es sich Select darin, dass die Transformationsfunktion eine Auflistung zurückgibt, die dann um erweitert wird, SelectMany bevor sie zurückgegeben wird.

Gilt für