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


DbExpressionBuilder.SelectMany Метод

Определение

Перегрузки

SelectMany(DbExpression, Func<DbExpression,DbExpression>)

Создает новое выражение DbApplyExpression, которое вычисляет указанное выражение apply один раз для каждого из элементов входного набора, создавая на выходе коллекцию строк с соответствующими столбцами input и apply. Строки, для которых результатом выражения apply стало пустое множество, не включаются. Затем создается выражение DbProjectExpression, выбирающее столбец apply из каждой строки, формируя таким образом коллекцию результатов apply.

SelectMany<TSelector>(DbExpression, Func<DbExpression,DbExpression>, Func<DbExpression,DbExpression,TSelector>)

Создает новое выражение DbApplyExpression, которое вычисляет указанное выражение apply один раз для каждого из элементов входного набора, создавая на выходе коллекцию строк с соответствующими столбцами input и apply. Строки, для которых результатом выражения apply стало пустое множество, не включаются. Затем создается выражение DbProjectExpression, выбирающее указанный selector из каждой строки, формируя таким образом коллекцию результатов.

SelectMany(DbExpression, Func<DbExpression,DbExpression>)

Создает новое выражение DbApplyExpression, которое вычисляет указанное выражение apply один раз для каждого из элементов входного набора, создавая на выходе коллекцию строк с соответствующими столбцами input и apply. Строки, для которых результатом выражения apply стало пустое множество, не включаются. Затем создается выражение DbProjectExpression, выбирающее столбец apply из каждой строки, формируя таким образом коллекцию результатов apply.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Data::Common::CommandTrees::DbProjectExpression ^ SelectMany(System::Data::Common::CommandTrees::DbExpression ^ source, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ apply);
public static System.Data.Common.CommandTrees.DbProjectExpression SelectMany (this System.Data.Common.CommandTrees.DbExpression source, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> apply);
static member SelectMany : System.Data.Common.CommandTrees.DbExpression * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> -> System.Data.Common.CommandTrees.DbProjectExpression
<Extension()>
Public Function SelectMany (source As DbExpression, apply As Func(Of DbExpression, DbExpression)) As DbProjectExpression

Параметры

source
DbExpression

Объект DbExpression, задающий входной набор.

apply
Func<DbExpression,DbExpression>

Метод, представляющий логику вычисления, которую необходимо применить для каждого из элементов входного набора.

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

Новое DbProjectExpression, который выбирает столбец применения из нового DbApplyExpression с определенным входом и привязками применения и DbExpressionKind CrossApply.

Исключения

source или apply равно null.

-или-

Выражение, созданное apply, имеет значение null.

Результат source не относится к типу коллекции.

-или-

Выражение, созданное apply, не может быть коллекцией.

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

SelectMany<TSelector>(DbExpression, Func<DbExpression,DbExpression>, Func<DbExpression,DbExpression,TSelector>)

Создает новое выражение DbApplyExpression, которое вычисляет указанное выражение apply один раз для каждого из элементов входного набора, создавая на выходе коллекцию строк с соответствующими столбцами input и apply. Строки, для которых результатом выражения apply стало пустое множество, не включаются. Затем создается выражение DbProjectExpression, выбирающее указанный selector из каждой строки, формируя таким образом коллекцию результатов.

public:
generic <typename TSelector>
[System::Runtime::CompilerServices::Extension]
 static System::Data::Common::CommandTrees::DbProjectExpression ^ SelectMany(System::Data::Common::CommandTrees::DbExpression ^ source, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ apply, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^, TSelector> ^ selector);
public static System.Data.Common.CommandTrees.DbProjectExpression SelectMany<TSelector> (this System.Data.Common.CommandTrees.DbExpression source, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> apply, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression,TSelector> selector);
static member SelectMany : System.Data.Common.CommandTrees.DbExpression * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression, 'Selector> -> System.Data.Common.CommandTrees.DbProjectExpression
<Extension()>
Public Function SelectMany(Of TSelector) (source As DbExpression, apply As Func(Of DbExpression, DbExpression), selector As Func(Of DbExpression, DbExpression, TSelector)) As DbProjectExpression

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

TSelector

Тип результата метода selector.

Параметры

source
DbExpression

Объект DbExpression, задающий входной набор.

apply
Func<DbExpression,DbExpression>

Метод, представляющий логику вычисления, которую необходимо применить для каждого из элементов входного набора.

selector
Func<DbExpression,DbExpression,TSelector>

Метод, задающий способ получения элемента результирующего набора из элемента входного набора и набора apply. Этот метод должен создавать экземпляр типа, совместимого с SelectMany, и который можно разрешить в объект DbExpression. Требования к совместимости TSelector приведены в примечаниях.

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

Новое DbProjectExpression, который выбирает результат из данного селектора из нового DbApplyExpression с определенным входом и привязками применения и DbExpressionKind CrossApply.

Исключения

Для параметров source, apply или selector задано значение null.

-или-

Выражение, созданное apply, имеет значение null.

-или-

Результат операции selector при преобразовании в DbExpression имеет значение null.

Результат source не относится к типу коллекции.

-или-

Выражение, созданное apply, не может быть коллекцией. не относится к типу коллекции.

Комментарии

Чтобы обеспечить совместимость с SelectMany, TSelector должен быть производным от или быть анонимным типом со свойствами, производными от DbExpressionDbExpression. Ниже приведены примеры поддерживаемых типов для TSelector:

source.SelectMany(x => x.Property("RelatedCollection"), (source, apply) => apply.Property("Name"))  

(TSelector имеет значение DbPropertyExpression).

source.SelectMany(x => x.Property("RelatedCollection"), (source, apply) => new { SourceName = source.Property("Name"), RelatedName = apply.Property("Name") })  

(TSelector — анонимный тип со свойствами, производными от DbExpression).

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