Condividi tramite


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

[Questa pagina è specifica della versione 6 di Entity Framework. La versione più recente è disponibile come pacchetto NuGet per "Entity Framework". Per ulteriori informazioni su Entity Framework, vedere la pagina msdn.com/data/ef.]

Crea un nuovo oggetto DbApplyExpression che valuta l'espressione apply specificata una volta per ogni elemento di un set di input specificato, producendo una raccolta di righe con colonne input e apply corrispondenti. Le righe per cui apply restituisce un set vuoto non vengono incluse. Verrà quindi creato un oggetto DbProjectExpression per la selezione dell'oggetto selector specificato su ogni riga, producendo la raccolta complessiva di risultati.

Spazio dei nomi:  System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder
Assembly:  EntityFramework (in EntityFramework.dll)

Sintassi

'Dichiarazione
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSelector) ( _
    source As DbExpression, _
    apply As Func(Of DbExpression, DbExpression), _
    selector As Func(Of DbExpression, DbExpression, TSelector) _
) As DbProjectExpression
'Utilizzo
Dim source As DbExpression 
Dim apply As Func(Of DbExpression, DbExpression)
Dim selector As Func(Of DbExpression, DbExpression, TSelector)
Dim returnValue As DbProjectExpression 

returnValue = source.SelectMany(apply, _
    selector)
public static DbProjectExpression SelectMany<TSelector>(
    this DbExpression source,
    Func<DbExpression, DbExpression> apply,
    Func<DbExpression, DbExpression, TSelector> selector
)
[ExtensionAttribute]
public:
generic<typename TSelector>
static DbProjectExpression^ SelectMany(
    DbExpression^ source, 
    Func<DbExpression^, DbExpression^>^ apply, 
    Func<DbExpression^, DbExpression^, TSelector>^ selector
)
static member SelectMany : 
        source:DbExpression * 
        apply:Func<DbExpression, DbExpression> * 
        selector:Func<DbExpression, DbExpression, 'TSelector> -> DbProjectExpression
JScript does not support generic types and methods.

Parametri di tipo

  • TSelector
    Tipo di risultato del metodo di selector.

Parametri

  • selector
    Tipo: System.Func<DbExpression, DbExpression, TSelector>
    Metodo che specifica come derivare un elemento del set di risultati dato un elemento dei set di input e apply. Questo metodo deve produrre un'istanza di un tipo compatibile con SelectMany che possa essere risolta in un oggetto DbExpression. Requisiti di compatibilità per TSelector come descritto nelle osservazioni.

Valore restituito

Tipo: System.Data.Entity.Core.Common.CommandTrees.DbProjectExpression
Nuovo elemento DbProjectExpression che seleziona il risultato del selettore specificato da un nuovo oggetto DbApplyExpression con le associazioni input e apply specificate e un oggetto DbExpressionKind di CrossApply.

Nota sull'utilizzo

In Visual Basic e C# è possibile chiamare questo metodo come metodo di istanza su qualsiasi oggetto di tipo DbExpression. Per chiamare il metodo usando la sintassi del metodo di istanza, omettere il primo parametro. Per altre informazioni, vedere https://msdn.microsoft.com/it-it/library/bb384936(v=vs.113) o https://msdn.microsoft.com/it-it/library/bb383977(v=vs.113).

Eccezioni

Eccezione Condizione
ArgumentNullException

source, apply o selector è Null.

ArgumentNullException

L'espressione generata da apply è Null.

ArgumentNullException

Il risultato di selector è Null nella conversione all'oggetto DbExpression.

ArgumentException

source non dispone di un tipo di risultato della raccolta.

ArgumentException

L'espressione generata da apply non dispone di un tipo di raccolta.

Note

Per essere compatibile con SelectMany, <typeparamref name="TSelector" /> deve derivare da DbExpression o deve essere un tipo anonimo con le proprietà derivate da DbExpression. Di seguito sono riportati esempi di tipi supportati per <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" /> è un tipo anonimo con proprietà derivate da DbExpression).

Vedere anche

Riferimento

DbExpressionBuilder Classe

Overload SelectMany

Spazio dei nomi System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder