Condividi tramite


Enumerable.Select Metodo

Definizione

Proietta ogni elemento di una sequenza in un nuovo form.

Overload

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

Proietta ogni elemento di una sequenza in un nuovo modulo incorporando l'indice dell'elemento.

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

Proietta ogni elemento di una sequenza in un nuovo form.

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

Origine:
Select.cs
Origine:
Select.cs
Origine:
Select.cs

Proietta ogni elemento di una sequenza in un nuovo modulo incorporando l'indice dell'elemento.

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)

Parametri di tipo

TSource

Tipo degli elementi di source.

TResult

Tipo del valore restituito dall'oggetto selector.

Parametri

source
IEnumerable<TSource>

Sequenza di valori su cui richiamare una funzione di trasformazione.

selector
Func<TSource,Int32,TResult>

Funzione di trasformazione da applicare a ogni elemento di origine; il secondo parametro della funzione rappresenta l'indice dell'elemento di origine.

Restituisce

IEnumerable<TResult>

Oggetto IEnumerable<T> i cui elementi sono il risultato ottenuto richiamando una funzione di trasformazione su ogni elemento di source.

Eccezioni

source o selector è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) per proiettare su una sequenza di valori e usare l'indice di ogni elemento.

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 }

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando il GetEnumerator relativo metodo direttamente o usando foreach in C# o For Each in Visual Basic.

Primo argomento da selector rappresentare l'elemento da elaborare. Secondo argomento da selector rappresentare l'indice in base zero di tale elemento nella sequenza di origine. Ciò può essere utile se gli elementi si trovano in un ordine noto e si vuole eseguire operazioni con un elemento in un determinato indice, ad esempio. Può essere utile anche se si vuole recuperare l'indice di uno o più elementi.

Questo metodo di proiezione richiede la funzione di trasformazione, , selectorper produrre un valore per ogni valore della sequenza di origine, source. Se selector restituisce un valore che si tratta di una raccolta, è necessario che il consumer attraversi manualmente le sottosequence. In tale situazione, potrebbe essere meglio che la query restituisca una singola sequenza di valori in unione. Per ottenere questo risultato, usare il SelectMany metodo anziché Select. Anche se SelectMany funziona in modo analogo a Select, è diverso in quanto la funzione di trasformazione restituisce una raccolta che viene quindi espansa prima SelectMany che venga restituita.

Si applica a

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

Origine:
Select.cs
Origine:
Select.cs
Origine:
Select.cs

Proietta ogni elemento di una sequenza in un nuovo form.

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)

Parametri di tipo

TSource

Tipo degli elementi di source.

TResult

Tipo del valore restituito dall'oggetto selector.

Parametri

source
IEnumerable<TSource>

Sequenza di valori su cui richiamare una funzione di trasformazione.

selector
Func<TSource,TResult>

Funzione di trasformazione da applicare a ogni elemento.

Restituisce

IEnumerable<TResult>

Oggetto IEnumerable<T> i cui elementi sono il risultato ottenuto richiamando una funzione di trasformazione su ogni elemento di source.

Eccezioni

source o selector è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) per proiettare su una sequenza di valori.

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

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando il GetEnumerator relativo metodo direttamente o usando foreach in C# o For Each in Visual Basic.

Questo metodo di proiezione richiede la funzione di trasformazione, , selectorper produrre un valore per ogni valore della sequenza di origine, source. Se selector restituisce un valore che si tratta di una raccolta, è necessario che il consumer attraversi manualmente le sottosequence. In tale situazione, potrebbe essere meglio che la query restituisca una singola sequenza di valori in unione. Per ottenere questo risultato, usare il SelectMany metodo anziché Select. Anche se SelectMany funziona in modo analogo a Select, è diverso in quanto la funzione di trasformazione restituisce una raccolta che viene quindi espansa prima SelectMany che venga restituita.

Nella sintassi dell'espressione di query una select clausola (C#) o Select (Visual Basic) si traduce in una chiamata di Select.

Vedi anche

Si applica a