Enumerable.Select Yöntem

Tanım

Bir dizinin her öğesini yeni bir forma projeler.

Aşırı Yüklemeler

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

Öğenin dizinini birleştirerek bir dizideki her öğeyi yeni bir forma projeler.

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

Bir dizinin her öğesini yeni bir forma projeler.

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

Kaynak:
Select.cs
Kaynak:
Select.cs
Kaynak:
Select.cs

Öğenin dizinini birleştirerek bir dizideki her öğeyi yeni bir forma projeler.

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)

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TResult

tarafından selectordöndürülen değerin türü.

Parametreler

source
IEnumerable<TSource>

Dönüştürme işlevinin çağrılmak için bir değer dizisi.

selector
Func<TSource,Int32,TResult>

Her kaynak öğeye uygulanacak dönüştürme işlevi; işlevinin ikinci parametresi, kaynak öğenin dizinini temsil eder.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> öğeleri, transform işlevinin her öğesinde sourceçağrılır.

Özel durumlar

source veya selector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir dizi değer üzerinde yansıtmak ve her öğenin dizinini kullanmak için nasıl Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) kullanılacağını gösterir.

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 }

Açıklamalar

Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator veya C# içinde veya For Each Visual Basic'te kullanarak foreach nesne numaralandırılana kadar yürütülür.

İşlenmek üzere öğeyi selector temsil eden ilk bağımsız değişken. için ikinci bağımsız değişken selector , kaynak dizideki bu öğenin sıfır tabanlı dizinini temsil eder. Öğeler bilinen bir sıradaysa ve belirli bir dizindeki bir öğeyle bir şey yapmak istiyorsanız, örneğin bu yararlı olabilir. Bir veya daha fazla öğenin dizinini almak istiyorsanız da yararlı olabilir.

Bu projeksiyon yöntemi, selectorkaynak dizisindeki sourceher değer için bir değer üretmek üzere transform işlevini gerektirir. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile geçmek tüketiciye bağlıdır. Böyle bir durumda, sorgunuzun tek bir birleşimli değer dizisi döndürmesi daha iyi olabilir. Bunu başarmak için yerine Selectyöntemini kullanınSelectMany. ile benzer şekilde Selectçalışsa SelectMany da, dönüştürme işlevinin döndürülmeden önce tarafından SelectMany genişletilmiş bir koleksiyon döndürmesi farklıdır.

Şunlara uygulanır

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

Kaynak:
Select.cs
Kaynak:
Select.cs
Kaynak:
Select.cs

Bir dizinin her öğesini yeni bir forma projeler.

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)

Tür Parametreleri

TSource

öğelerinin sourcetürü.

TResult

tarafından selectordöndürülen değerin türü.

Parametreler

source
IEnumerable<TSource>

Dönüştürme işlevinin çağrılmak için bir değer dizisi.

selector
Func<TSource,TResult>

Her öğeye uygulanacak dönüştürme işlevi.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> öğeleri, transform işlevinin her öğesinde sourceçağrılır.

Özel durumlar

source veya selector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir değer dizisi üzerinden yansıtmak için özelliğinin nasıl kullanılacağını Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) gösterir.

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

Açıklamalar

Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator veya C# içinde veya For Each Visual Basic'te kullanarak foreach nesne numaralandırılana kadar yürütülür.

Bu projeksiyon yöntemi, selectorkaynak dizisindeki sourceher değer için bir değer üretmek üzere transform işlevini gerektirir. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile geçmek tüketiciye bağlıdır. Böyle bir durumda, sorgunuzun tek bir birleşimli değer dizisi döndürmesi daha iyi olabilir. Bunu başarmak için yerine Selectyöntemini kullanınSelectMany. ile benzer şekilde Selectçalışsa SelectMany da, dönüştürme işlevinin döndürülmeden önce tarafından SelectMany genişletilmiş bir koleksiyon döndürmesi farklıdır.

Sorgu ifadesi söz diziminde bir select (C#) veya Select (Visual Basic) yan tümcesi çağrısına Selectdönüşür.

Ayrıca bkz.

Şunlara uygulanır