2012-04-01 22 views
2

Ich könnte Hilfe bei der Ausdruckskonvertierung verwenden.Umwandlung von Ausdruck <Func <TypeIn, TypeOut1 >> in Ausdruck <Func <TypeIn, TypeOut2 >>

Ich habe eine Methode für eine Klasse, die wie folgt aussieht:

Dies ist eine generische Abfrage für ein Endlager Klasse. Ich möchte die generischen Dinge beibehalten, also habe ich den Parameter "Parameter" angegeben, sodass der Typ der Eigenschaft keine Rolle spielt. Allerdings ist diese Implementierung Beispiel NHibernate verwendet, und ich versuche, die folgendes zu tun:

var query = session.QueryOver<TEntity>().OrderBy(orderBy).Asc; 

jedoch ther SortiertNach Methode nimmt einen Parameter Ausdruck> und deshalb bekomme ich einen Compiler-Fehler, da es keine Garantie gibt, dass TOrderBy wäre ein Objekt.

Gibt es eine Möglichkeit, diese Konvertierung durchzuführen, oder sollte ich einfach bei der Verwendung von Objekt anstelle von TOrderBy bleiben? Wenn ich bei Objekten bleibe, verliere ich nicht die Möglichkeit, nach ValueTypes (z. B. DateTime) zu sortieren?

Danke für jede Hilfe/Vorschläge.

EDIT: Ich sollte erwähnen, ich habe diese generische gehalten, wie ich Implementierungen für Nhibernate und Entity Framework schreiben werde. Es gibt kein Problem in EF, da es die normale Linq OrderBy-Methode verwendet. Es ist nur in der Nhibernate-Implementierung Ich habe dieses Problem

+0

Ich kann falsch sein, aber wenn es einen Fehler mit TOrderBy gibt, könnten Sie versuchen, Einschränkungen hinzufügen wie "where TOrderBy: class" –

+0

Ich möchte keine Einschränkung der Klasse hinzufügen, als dann Sie nicht in der Lage, Dinge zu verwenden wie DateTime oder int oder andere Werttypen –

+0

Könnten Sie typeof (TOrderBy) verwenden, um alternative Logik für Referenz- gegen Werttypen auszuführen? – Rich

Antwort

0

Wenn Sie LINQ mit EF verwenden, warum nicht auch LINQ mit NHibernate anstelle von QueryOver verwenden?

+0

Ja jemand wies mich darauf hin, dass mit NH 3, Linq2NH hinzugefügt wurde, so dass ich für dieses spezielle Szenario zu diesem gewechselt habe –

Verwandte Themen