Ich bin diesen großen generische Art Helfer von Herrn Cincura (http://blog.cincura.net/229310-sorting-in-iqueryable-using-string-as-column-name/) mit Aufzeichnungen von SQL Server sortieren zurück Entity Framework mitGenerisches Sortieren nach ähnlichem Objekt
private static IOrderedQueryable<T> OrderingHelper<T>(IQueryable<T> source, string propertyName, bool descending, bool anotherLevel)
{
ParameterExpression param = Expression.Parameter(typeof(T), string.Empty); // I don't care about some naming
MemberExpression property = Expression.PropertyOrField(param, propertyName);
LambdaExpression sort = Expression.Lambda(property, param);
MethodCallExpression call = Expression.Call(
typeof(Queryable),
(!anotherLevel ? "OrderBy" : "ThenBy") + (descending ? "Descending" : string.Empty),
new[] { typeof(T), property.Type },
source.Expression,
Expression.Quote(sort));
return (IOrderedQueryable<T>)source.Provider.CreateQuery<T>(call);
}
Das Problem ist, es funktioniert jede Eigenschaft bilden, das Objekt, aber nicht für die Eigenschaften eines verwandten Objekts. wenn ich
public foo FOO;
public class foo
{
public string name {get;set};
public bar Bar {get;set;}
}
public class bar
{
public string name {get;set;}
}
haben kann ich von FOO.name sortieren aber nicht von FOO.Bar.name aber nicht von foo.Bar.name.
Ich denke, ich muss einen anderen Ausdruck zuordnen, aber meine bisherigen Versuche ergaben keine Ergebnisse. Ich würde jede Hilfe schätzen.
Dies wäre viel besser lesbar, wenn Sie Klassen- und Variablennamen verwenden, die sich nicht nur nach Gehäuse unterscheiden. Außerdem zeigen Sie, wie Sie das 'IQueryable' erstellt und' OrderingHelper' verwendet haben – derpirscher