Enumerable.Select Yöntem

Tanım

Bir dizinin her öğesini yeni bir forma projeler.

Aşırı Yüklemeler

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

Öğesinin 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
Kaynak:
Select.cs
Kaynak:
Select.cs

Öğesinin 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 sourceçağrılır.

Özel durumlar

source veya selector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir değer dizisi ü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 ertelenen 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, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak 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 her değer için bir değer üretmek için transform işlevini gerektirir source. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile gezinmek tüketiciye aittir. 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 SelectManykullanınSelect. ile benzer şekilde SelectManyçalışsa Select 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
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 sourceçağrılır.

Ö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 ertelenen 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, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

Bu projeksiyon yöntemi, selectorkaynak dizisindeki her değer için bir değer üretmek için transform işlevini gerektirir source. Kendisi bir koleksiyon olan bir değer döndürürse selector , alt dizileri el ile gezinmek tüketiciye aittir. 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 SelectManykullanınSelect. ile benzer şekilde SelectManyçalışsa Select 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, select (C#) veya Select (Visual Basic) yan tümcesi, Select çağrısına çevrilir.

Ayrıca bkz.

Şunlara uygulanır