2009-06-15 7 views
4

je aurais besoin d'être en mesure de combiner 2 expressions lambda en 1:combinant des expressions lambda aux chemins de propriété

Cela me servira à créer une extension du type de sécurité comprend (pour EF).

Maintenant, vous pouvez faire:

context.House 
.Include(x => x.Doors.Doorknobs) 

Je voudrais être en mesure de diviser la déclaration ci-dessus dans différentes méthodes.

quelque chose comme IncludeDoorKnobs (requête, expressionFromRoot, expressionFromCurrentToChild)

Je voudrais - Inclure l'expression combinée à la requête - Inclure Childs supplémentaires (de courant) à cette requête - Appel autres méthodes similaires, y compris une autre partie de l'arbre.

Ma connaissance de Lambda de façon évidente à court, et je serais vraiment besoin d'entrer dans les bientôt, mais pour l'instant, je dois recourir tho SOF ...

Répondre

1

Avec LINQ to SQL ce serait banal; vous utilisez simplement Expression.Invoke pour lui dire d'utiliser une sous-expression existante (avec substitution de paramètre) au point donné. Cependant, EF ne le fait pas (ou n'a pas vérifié la dernière fois).

Malheureusement, le processus pour combiner deux expressions sans c'est ... complexe; vous devez essentiellement reconstruire complètement l'arborescence interne, en effectuant une substitution manuelle pour des choses comme des paramètres. J'avais du code qui faisait ça, mais c'est loin d'être simple (et ce n'est pas "à la main").

Mais je me demande: vaut-il vraiment la peine?

+0

Non, ce n'est pas le cas. Donc je suppose que cela convient comme réponse :-) – Bertvan

Questions connexes