DbExpressionBuilder.SelectMany Method

 

Namespace:   System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder
Assembly:  EntityFramework (in EntityFramework.dll)

NameDescription
System_CAPS_pubmethodSystem_CAPS_staticSelectMany(DbExpression, Func<DbExpression, DbExpression>)

Creates a new DbApplyExpression that evaluates the given apply expression once for each element of a given input set, producing a collection of rows with corresponding input and apply columns. Rows for which apply evaluates to an empty set are not included. A DbProjectExpression is then created that selects the specified selector over each row, producing the overall collection of results.

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

Creates a new DbApplyExpression that evaluates the given apply expression once for each element of a given input set, producing a collection of rows with corresponding input and apply columns. Rows for which apply evaluates to an empty set are not included. A DbProjectExpression is then created that selects the specified selector over each row, producing the overall collection of results.


DbExpressionBuilder.SelectMany Method (DbExpression, Func<DbExpression, DbExpression>)

Creates a new DbApplyExpression that evaluates the given apply expression once for each element of a given input set, producing a collection of rows with corresponding input and apply columns. Rows for which apply evaluates to an empty set are not included. A DbProjectExpression is then created that selects the specified selector over each row, producing the overall collection of results.

public static DbProjectExpression SelectMany(
	this DbExpression source,
	Func<DbExpression, DbExpression> apply
)

Parameters

source
Type: System.Data.Entity.Core.Common.CommandTrees.DbExpression

A DbExpression that specifies the input set.

apply
Type: System.Func<DbExpression, DbExpression>

A method that represents the logic to evaluate once for each member of the input set.

Return Value

Type: System.Data.Entity.Core.Common.CommandTrees.DbProjectExpression

A new DbProjectExpression that selects the apply column from a new DbApplyExpression with the specified input and apply bindings and anDbExpressionKindof CrossApply.

Exception Condition
ArgumentNullException

source or apply is null.

ArgumentNullException

The expression produced by apply is null.

ArgumentException

source does not have a collection result type.

ArgumentException

The expression produced by apply does not have a collection type.


DbExpressionBuilder.SelectMany<TSelector> Method (DbExpression, Func<DbExpression, DbExpression>, Func<DbExpression, DbExpression, TSelector>)

Creates a new DbApplyExpression that evaluates the given apply expression once for each element of a given input set, producing a collection of rows with corresponding input and apply columns. Rows for which apply evaluates to an empty set are not included. A DbProjectExpression is then created that selects the specified selector over each row, producing the overall collection of results.

public static DbProjectExpression SelectMany<TSelector>(
	this DbExpression source,
	Func<DbExpression, DbExpression> apply,
	Func<DbExpression, DbExpression, TSelector> selector
)

Parameters

source
Type: System.Data.Entity.Core.Common.CommandTrees.DbExpression

A DbExpression that specifies the input set.

apply
Type: System.Func<DbExpression, DbExpression>

A method that represents the logic to evaluate once for each member of the input set.

selector
Type: System.Func<DbExpression, DbExpression, TSelector>

A method that specifies how an element of the result set should be derived given an element of the input and apply sets. This method must produce an instance of a type that is compatible with SelectMany and can be resolved into a DbExpression. Compatibility requirements for TSelector are described in remarks.

Return Value

Type: System.Data.Entity.Core.Common.CommandTrees.DbProjectExpression

A new DbProjectExpression that selects the result of the given selector from a new DbApplyExpression with the specified input and apply bindings and anDbExpressionKindof CrossApply.

Type Parameters

TSelector

The method result type of selector.

Exception Condition
ArgumentNullException

source, apply or selector is null.

ArgumentNullException

The expression produced by apply is null.

ArgumentNullException

The result of selector is null on conversion to DbExpression.

ArgumentException

source does not have a collection result type.

ArgumentException

The expression produced by apply does not have a collection type.

To be compatible with SelectMany, <typeparamref name="TSelector" /> must be derived from DbExpression,or must be an anonymous type with DbExpression-derived properties. The following are examples of supported types for <typeparamref name="TSelector" /> : <code>source.SelectMany(x =&gt; x.Property("RelatedCollection"), (source, apply) =&gt; apply.Property("Name"))</code> ( <typeparamref name="TSelector" /> is DbPropertyExpression ). <code>source.SelectMany(x =&gt; x.Property("RelatedCollection"), (source, apply) =&gt; new { SourceName = source.Property("Name"), RelatedName = apply.Property("Name") })</code> ( <typeparamref name="TSelector" /> is an anonymous type with DbExpression-derived properties).