Enumerable.Select Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
Fungsi transformasi untuk diterapkan ke setiap elemen sumber; parameter kedua fungsi mewakili indeks elemen sumber.
Mengembalikan
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
di 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 terserah untuk melintasi suburutan secara manual. Dalam situasi seperti itu, mungkin lebih baik bagi kueri Anda untuk mengembalikan satu urutan nilai yang dikoalesisi. Untuk mencapai hal ini, gunakan metode alih-alih SelectManySelect. Meskipun SelectMany
bekerja sama 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
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
di 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 terserah untuk melintasi suburutan secara manual. Dalam situasi seperti itu, mungkin lebih baik bagi kueri Anda untuk mengembalikan satu urutan nilai yang dikoalesisi. Untuk mencapai hal ini, gunakan metode alih-alih SelectManySelect. Meskipun SelectMany
bekerja sama 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.