Enumerable.Select Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Projecteert elk element van een reeks in een nieuwe vorm.
Overloads
| Name | Description |
|---|---|
| Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Projecteert elk element van een reeks in een nieuw formulier door de index van het element op te nemen. |
| Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Projecteert elk element van een reeks in een nieuwe vorm. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
Projecteert elk element van een reeks in een nieuw formulier door de index van het element op te nemen.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TResult
Het type van de waarde die wordt geretourneerd door selector.
Parameters
- source
- IEnumerable<TSource>
Een reeks waarden voor het aanroepen van een transformatiefunctie.
Een transformatiefunctie die moet worden toegepast op elk bronelement; de tweede parameter van de functie vertegenwoordigt de index van het bronelement.
Retouren
Een IEnumerable<T> waarvan de elementen het resultaat zijn van het aanroepen van de transformatiefunctie op elk element van source.
Uitzonderingen
source of selector is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u kunt gebruiken Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) om een reeks waarden te projecteren en de index van elk element te gebruiken.
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 }
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Het eerste argument dat selector het element vertegenwoordigt dat moet worden verwerkt. Het tweede argument om de op nul gebaseerde index van dat element in de bronreeks weer selector te geven. Dit kan handig zijn als de elementen zich in een bekende volgorde bevinden en u bijvoorbeeld iets wilt doen met een element in een bepaalde index. Het kan ook handig zijn als u de index van een of meer elementen wilt ophalen.
Voor deze projectiemethode is de transformatiefunctie vereist om selectoréén waarde te produceren voor elke waarde in de bronreeks. source Als selector een waarde wordt geretourneerd die zelf een verzameling is, is het aan de consument om de subsequences handmatig te doorlopen. In een dergelijke situatie is het misschien beter voor uw query om één gesamensceerde reeks waarden te retourneren. Gebruik hiervoor de SelectMany methode in plaats van Select. Hoewel SelectMany het op dezelfde manier Selectwerkt, verschilt het in dat de transformatiefunctie een verzameling retourneert die vervolgens wordt uitgebreid SelectMany voordat deze wordt geretourneerd.
Van toepassing op
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
Projecteert elk element van een reeks in een nieuwe vorm.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TResult
Het type van de waarde die wordt geretourneerd door selector.
Parameters
- source
- IEnumerable<TSource>
Een reeks waarden voor het aanroepen van een transformatiefunctie.
- selector
- Func<TSource,TResult>
Een transformatiefunctie die op elk element moet worden toegepast.
Retouren
Een IEnumerable<T> waarvan de elementen het resultaat zijn van het aanroepen van de transformatiefunctie op elk element van source.
Uitzonderingen
source of selector is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u kunt gebruiken Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) om een reeks waarden te projecteren.
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
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Voor deze projectiemethode is de transformatiefunctie vereist om selectoréén waarde te produceren voor elke waarde in de bronreeks. source Als selector een waarde wordt geretourneerd die zelf een verzameling is, is het aan de consument om de subsequences handmatig te doorlopen. In een dergelijke situatie is het misschien beter voor uw query om één gesamensceerde reeks waarden te retourneren. Gebruik hiervoor de SelectMany methode in plaats van Select. Hoewel SelectMany het op dezelfde manier Selectwerkt, verschilt het in dat de transformatiefunctie een verzameling retourneert die vervolgens wordt uitgebreid SelectMany voordat deze wordt geretourneerd.
In de syntaxis van de query-expressie wordt een component select (C#) of Select (Visual Basic) omgezet in een aanroep van Select.