Ich benutze diese dynamische linq orderby-Funktion, die ich von here erhalten habe.Dynamische Linq-Reihenfolge von einer verschachtelten Eigenschaft mit Null-Eigenschaften
Dies funktioniert mit verschachtelten Eigenschaften fein so dass ich dies tun könnte:
var result = data.OrderBy("SomeProperty.NestedProperty");
Das Problem ist, dass, wenn SomeProperty null die OrderBy auf dem NestedProperty dann ist die Durchführung des berüchtigten „Objektverweis nicht gesetzt wirft auf eine Instanz ein Objekt".
Meine Vermutung ist, dass ich die folgenden Zeilen anpassen, um die Ausnahme zu behandeln:
expr = Expression.Property(expr, pi);
// Or
LambdaExpression lambda = Expression.Lambda(delegateType, expr, arg);
Ich dachte an eine Aussage Körper zu schaffen, wo ich im schlimmsten Fall einen Versuch fängt aber, dass didn verwenden könnte‘ t arbeiten, da Sie keine Anweisungskörper in orderby linq-Anweisungen haben können: "Ein Lambda-Ausdruck mit einem Anweisungskörper kann nicht in einen Ausdrucksbaum konvertiert werden"
Ich bin hier verloren, irgendwelche Vorschläge, wie ich dies erreichen kann ?
Übrigens ist dies für Linq zu Objekten, nicht Datenbank bezogen.
Ich denke, diese Zeile 'expr = Expression.Property (expr, pi);' 'expr' Sätze null und weiteren Code ist es nicht handhaben. Der einfachste Weg, um es zu beheben, ist 'expr = Expression.Property (expr, pi) ?? Standard (T); '. Allerdings müssen Sie in diesem Fall überprüfen, ob Sie mit der angewandten Reihenfolge einverstanden sind. – Tommi
Es ist ein guter Punkt, eigentlich würde das Sortieren falsch funktionieren, idealerweise sollten die Nullen "gruppiert" werden. –
sehen, ob dies Ihnen in irgendeiner Weise hilft http://stackoverflow.com/questions/41244/dynamic-linq-orderby-on-ienumerablet?lq=1 – Ehsan