Enumerable.Select Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Projicerar varje element i en sekvens till ett nytt formulär.
Överlagringar
| Name | Description |
|---|---|
| Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Projicerar varje element i en sekvens i ett nytt formulär genom att införliva elementets index. |
| Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Projicerar varje element i en sekvens till ett nytt formulär. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
Projicerar varje element i en sekvens i ett nytt formulär genom att införliva elementets index.
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)
Typparametrar
- TSource
Typen av element sourcei .
- TResult
Typen av värde som returneras av selector.
Parametrar
- source
- IEnumerable<TSource>
En sekvens med värden som ska anropa en transformeringsfunktion på.
En transformeringsfunktion som ska tillämpas på varje källelement. den andra parametern för funktionen representerar indexet för källelementet.
Returer
Ett IEnumerable<T> vars element är resultatet av att anropa transformeringsfunktionen på varje element i source.
Undantag
source eller selector är null.
Exempel
Följande kodexempel visar hur du använder Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) för att projicera över en sekvens med värden och använda indexet för varje element.
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 }
Kommentarer
Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.
Det första argumentet som selector representerar elementet som ska bearbetas. Det andra argumentet som selector representerar det nollbaserade indexet för det elementet i källsekvensen. Detta kan vara användbart om elementen är i en känd ordning och du till exempel vill göra något med ett element i ett visst index. Det kan också vara användbart om du vill hämta indexet för ett eller flera element.
Den här projektionsmetoden kräver transformeringsfunktionen, selector, för att skapa ett värde för varje värde i källsekvensen, source. Om selector returnerar ett värde som i sig är en samling är det upp till konsumenten att bläddra igenom underfrågorna manuellt. I en sådan situation kan det vara bättre för din fråga att returnera en enda sammansejsad sekvens med värden. För att uppnå detta använder du SelectMany metoden i stället för Select. Även om SelectMany fungerar på liknande sätt Selectskiljer det sig åt eftersom transformeringsfunktionen returnerar en samling som sedan expanderas av SelectMany innan den returneras.
Gäller för
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
Projicerar varje element i en sekvens till ett nytt formulär.
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)
Typparametrar
- TSource
Typen av element sourcei .
- TResult
Typen av värde som returneras av selector.
Parametrar
- source
- IEnumerable<TSource>
En sekvens med värden som ska anropa en transformeringsfunktion på.
- selector
- Func<TSource,TResult>
En transformeringsfunktion som ska tillämpas på varje element.
Returer
Ett IEnumerable<T> vars element är resultatet av att anropa transformeringsfunktionen på varje element i source.
Undantag
source eller selector är null.
Exempel
I följande kodexempel visas hur du projicerar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) över en sekvens med värden.
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
Kommentarer
Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.
Den här projektionsmetoden kräver transformeringsfunktionen, selector, för att skapa ett värde för varje värde i källsekvensen, source. Om selector returnerar ett värde som i sig är en samling är det upp till konsumenten att bläddra igenom underfrågorna manuellt. I en sådan situation kan det vara bättre för din fråga att returnera en enda sammansejsad sekvens med värden. För att uppnå detta använder du SelectMany metoden i stället för Select. Även om SelectMany fungerar på liknande sätt Selectskiljer det sig åt eftersom transformeringsfunktionen returnerar en samling som sedan expanderas av SelectMany innan den returneras.
I frågeuttryckssyntax översätts en select (C#) eller Select-sats (Visual Basic) till ett anrop av Select.