avatar
Untitled

Guest 141 5th Jun, 2023

MARKUP 0.81 KB
                                           
                         using System;
using System.Linq;
using System.Linq.Expressions;

// ...

public IQueryable<T> SortByNestedProperty<T>(IQueryable<T> query, string propertyName, string sortDirection)
{
    var parameter = Expression.Parameter(typeof(T), "x");
    var propertyAccess = propertyName.Split('.')
        .Aggregate((Expression)parameter, Expression.Property);
    var lambda = Expression.Lambda(propertyAccess, parameter);

    var orderByExpression = Expression.Call(
        typeof(Queryable),
        sortDirection == "desc" ? "OrderByDescending" : "OrderBy",
        new Type[] { typeof(T), propertyAccess.Type },
        query.Expression,
        lambda
    );

    return query.Provider.CreateQuery<T>(orderByExpression);
}
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM