Enumerable.Select Metode

Definisi

Memproyeksikan setiap elemen urutan ke dalam bentuk baru.

Overload

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

Memproyeksikan setiap elemen urutan ke dalam bentuk baru dengan menggabungkan indeks elemen.

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

Memproyeksikan setiap elemen urutan ke dalam bentuk baru.

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

Sumber:
Select.cs
Sumber:
Select.cs
Sumber:
Select.cs

Memproyeksikan setiap elemen urutan ke dalam bentuk baru dengan menggabungkan indeks elemen.

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)

Jenis parameter

TSource

Jenis elemen source.

TResult

Jenis nilai yang dikembalikan oleh selector.

Parameter

source
IEnumerable<TSource>

Urutan nilai untuk memanggil fungsi transformasi.

selector
Func<TSource,Int32,TResult>

Fungsi transformasi untuk diterapkan ke setiap elemen sumber; parameter kedua fungsi mewakili indeks elemen sumber.

Mengembalikan

IEnumerable<TResult>

Elemen IEnumerable<T> yang merupakan hasil dari pemanggilan fungsi transformasi pada setiap elemen source.

Pengecualian

source atau selector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) untuk memproyeksikan urutan nilai dan menggunakan indeks setiap elemen.

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 }

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach dalam C# atau For Each di Visual Basic.

Argumen pertama yang selector mewakili elemen yang akan diproses. Argumen kedua untuk selector mewakili indeks berbasis nol dari elemen tersebut dalam urutan sumber. Ini dapat berguna jika elemen berada dalam urutan yang diketahui dan Anda ingin melakukan sesuatu dengan elemen pada indeks tertentu, misalnya. Ini juga dapat berguna jika Anda ingin mengambil indeks dari satu atau beberapa elemen.

Metode proyeksi ini memerlukan fungsi transformasi, selector, untuk menghasilkan satu nilai untuk setiap nilai dalam urutan sumber, source. Jika selector mengembalikan nilai yang merupakan koleksi itu sendiri, konsumen harus melintasi sub-urutan secara manual. Dalam situasi seperti itu, mungkin lebih baik bagi kueri Anda untuk mengembalikan satu urutan nilai yang digabungkan. Untuk mencapai hal ini, gunakan SelectMany metode alih-alih Select. Meskipun SelectMany berfungsi mirip dengan Select, fungsi transformasi berbeda mengembalikan koleksi yang kemudian diperluas SelectMany sebelum dikembalikan.

Berlaku untuk

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

Sumber:
Select.cs
Sumber:
Select.cs
Sumber:
Select.cs

Memproyeksikan setiap elemen urutan ke dalam bentuk baru.

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)

Jenis parameter

TSource

Jenis elemen source.

TResult

Jenis nilai yang dikembalikan oleh selector.

Parameter

source
IEnumerable<TSource>

Urutan nilai untuk memanggil fungsi transformasi.

selector
Func<TSource,TResult>

Fungsi transformasi untuk diterapkan ke setiap elemen.

Mengembalikan

IEnumerable<TResult>

Elemen IEnumerable<T> yang merupakan hasil dari pemanggilan fungsi transformasi pada setiap elemen source.

Pengecualian

source atau selector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) untuk memproyeksikan urutan nilai.

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

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach dalam C# atau For Each di Visual Basic.

Metode proyeksi ini memerlukan fungsi transformasi, selector, untuk menghasilkan satu nilai untuk setiap nilai dalam urutan sumber, source. Jika selector mengembalikan nilai yang merupakan koleksi itu sendiri, konsumen harus melintasi sub-urutan secara manual. Dalam situasi seperti itu, mungkin lebih baik bagi kueri Anda untuk mengembalikan satu urutan nilai yang digabungkan. Untuk mencapai hal ini, gunakan SelectMany metode alih-alih Select. Meskipun SelectMany berfungsi mirip dengan Select, fungsi transformasi berbeda mengembalikan koleksi yang kemudian diperluas SelectMany sebelum dikembalikan.

Dalam sintaks ekspresi kueri, select klausa (C#) atau Select (Visual Basic) diterjemahkan ke pemanggilan Select.

Lihat juga

Berlaku untuk