DbExpressionBuilder.SelectMany Method
Assembly: EntityFramework (in EntityFramework.dll)
Name | Description | |
---|---|---|
![]() ![]() | SelectMany(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. |
![]() ![]() | SelectMany<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.DbProjectExpressionA 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.DbProjectExpressionA 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 => x.Property("RelatedCollection"), (source, apply) => apply.Property("Name"))</code> ( <typeparamref name="TSelector" /> is DbPropertyExpression ). <code>source.SelectMany(x => x.Property("RelatedCollection"), (source, apply) => new { SourceName = source.Property("Name"), RelatedName = apply.Property("Name") })</code> ( <typeparamref name="TSelector" /> is an anonymous type with DbExpression-derived properties).