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 dizinin her öğesini 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 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, 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 bir 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 çağrılması sonucu olan bir öğesidirsource.

Özel durumlar

source veya selector şeklindedir null.

Örnekler

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

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. Anında 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. Ayrıca, bir veya daha fazla öğenin dizinini almak istediğinizde de yararlı olabilir.

Bu projeksiyon yöntemi, selectorkaynak dizisindeki sourceher değer için bir değer üretmek üzere dönüştürme işlevini gerektirir. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile çapraz geçiş yapmak 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 yöntemini SelectkullanınSelectMany. ile benzer şekilde Selectçalışsa SelectMany da, dönüştürme işlevinin döndürülmeden önce tarafından SelectMany genişletilir 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 bir dönüştürme işlevi.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> öğeleri, transform işlevinin her öğesinde çağrılması sonucu olan bir öğesidirsource.

Özel durumlar

source veya selector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir değer dizisi üzerinde yansıtmak için 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. Anında 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 dönüştürme işlevini gerektirir. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile çapraz geçiş yapmak 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 yöntemini SelectkullanınSelectMany. ile benzer şekilde Selectçalışsa SelectMany da, dönüştürme işlevinin döndürülmeden önce tarafından SelectMany genişletilir bir koleksiyon döndürmesi farklıdır.

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

Ayrıca bkz.

Şunlara uygulanır