Прочитать на английском

Поделиться через


Queryable.Select Метод

Определение

Проецирует каждый элемент последовательности в новую форму.

Перегрузки

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>)

Проецирует каждый элемент последовательности в новую форму, добавляя индекс элемента.

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>)

Проецирует каждый элемент последовательности в новую форму.

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>)

Исходный код:
Queryable.cs
Исходный код:
Queryable.cs
Исходный код:
Queryable.cs

Проецирует каждый элемент последовательности в новую форму, добавляя индекс элемента.

public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,TResult>> selector);

Параметры типа

TSource

Тип элементов source.

TResult

Тип значения, возвращаемого функцией, заданной параметром selector.

Параметры

source
IQueryable<TSource>

Последовательность значений, которые следует проецировать.

selector
Expression<Func<TSource,Int32,TResult>>

Функция проекции, применяемая к каждому элементу.

Возвращаемое значение

IQueryable<TResult>

Объект IQueryable<T>, элементы которого получены в результате вызова функции проекции для каждого элемента последовательности source.

Исключения

Параметр source или selector имеет значение null.

Примеры

В следующем примере кода показано, как использовать Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) для проецирования последовательность значений и использовать индекс каждого элемента в проецируемых формах.

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

// Project an anonymous type that contains the
// index of the string in the source array, and
// a string that contains the same number of characters
// as the string's index in the source array.
var query =
    fruits.AsQueryable()
    .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 }
*/

Комментарии

Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано Expression<TDelegate>в .

Метод Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) создает объект , MethodCallExpression представляющий вызов Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) как сконструированный универсальный метод. Затем он передает в MethodCallExpressionCreateQuery(Expression) метод объекта , IQueryProvider представленный свойством Providersource параметра .

Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он вызывает selector для каждого элемента , source чтобы проецировать его в другую форму.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>)

Исходный код:
Queryable.cs
Исходный код:
Queryable.cs
Исходный код:
Queryable.cs

Проецирует каждый элемент последовательности в новую форму.

public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TResult>> selector);

Параметры типа

TSource

Тип элементов source.

TResult

Тип значения, возвращаемого функцией, заданной параметром selector.

Параметры

source
IQueryable<TSource>

Последовательность значений, которые следует проецировать.

selector
Expression<Func<TSource,TResult>>

Функция проекции, применяемая к каждому элементу.

Возвращаемое значение

IQueryable<TResult>

Объект IQueryable<T>, элементы которого получены в результате вызова функции проекции для каждого элемента последовательности source.

Исключения

Параметр source или selector имеет значение null.

Примеры

В следующем примере кода показано, как использовать Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) для проецировать последовательность значений.

List<int> range =
    new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Project the square of each int value.
IEnumerable<int> squares =
    range.AsQueryable().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
*/

Комментарии

Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано Expression<TDelegate>в .

Метод Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) создает объект , MethodCallExpression представляющий вызов Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) как сконструированный универсальный метод. Затем он передает в MethodCallExpressionCreateQuery(Expression) метод объекта , IQueryProvider представленный свойством Providersource параметра .

Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он вызывает selector для каждого элемента , source чтобы проецировать его в другую форму.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0