Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

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

 

Data di pubblicazione: ottobre 2016

Proietta ogni elemento di una sequenza in una nuova forma incorporando l'indice dell'elemento.

Spazio dei nomi:   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
)

Parametri

source
Type: System.Collections.Generic.IEnumerable<TSource>

Sequenza di valori su cui richiamare una funzione di trasformazione.

selector
Type: System.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.

Valore restituito

Type: System.Collections.Generic.IEnumerable<TResult>

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

Parametri tipo

TSource

Tipo degli elementi di source.

TResult

Tipo del valore restituito dall'oggetto selector.

Exception Condition
ArgumentNullException

source o selector è null.

Questo metodo viene implementato tramite 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 viene enumerata chiamando il relativo GetEnumerator metodo direttamente o tramite foreach in Visual C# o For Each in Visual Basic.

Il primo argomento selector rappresenta l'elemento da elaborare. Il secondo argomento selector rappresenta l'indice in base zero dell'elemento nella sequenza di origine. Può essere utile se gli elementi in un ordine noto e si desidera eseguire un'operazione con un elemento in corrispondenza di un indice specifico, ad esempio. Può inoltre essere utile se si desidera recuperare l'indice di uno o più elementi.

Questo metodo di proiezione richiede la funzione di trasformazione, selector, per produrre un valore per ogni valore nella sequenza di origine, source. Se selector restituisce un valore che è un insieme, spetta al consumer di sottosequenze manualmente. In questo caso, potrebbe essere preferibile se la query restituire restituisse una singola sequenza di valori. A tale scopo, utilizzare il SelectMany<TSource, TResult> metodo invece Select<TSource, TResult>. Anche se SelectMany è simile a Select, la differenza che la funzione di trasformazione restituisce una raccolta che viene quindi espansa da SelectMany prima che venga restituito.

Esempio di codice seguente viene illustrato come utilizzare Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, TResult>) per proiettare su una sequenza di valori e utilizzare 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}
*/

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: