Wie ändert man den Typ des Parameters in einem Ausdruck?

.net c#-3.0 expression-trees lambda linq

Frage

Da ich POCOS in meiner Domäne verwende, möchte ich, dass mein Repository Expression-Filter vom Typ meines POCOS empfangen kann und den Parameter im Ausdruck so ändern, dass er der Typ meiner LINQ-Tabellen ist. Meine Felder haben denselben Namen wie meine Mitglieder, so konnte ich dies für 1 und 2 Lambda-Bedingungen erreichen, indem ich in Mitglieder und Konstanten, wenn ich mehr Bedingungen hinzufügen, führt dies zu rekursiv analysieren den binären Ausdruck.

So endete ich, gibt es einen einfachen Weg, dies zu erreichen

var q = from p in 
        db.products.Where(ExpressionBuilder.Create<MyPocoProduct,LinqProduct>(myPocoProductExpression))

So wie ich es ändere

var q = from p in 
        db.products.Where(ExpressionBuilder.Create<MyPocoProduct,LinqProduct>(myPocoProductExpression))

Expertenantwort

Nein, Sie können den Typ einer ParameterExpression nicht ändern (Ausdrucksbäume sind unveränderlich); Sie müssten den gesamten Baum neu erstellen, um dies zu tun. Und ja, oft muss man es rekapitulieren. Es tut uns leid...




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum