NPoco OrderBy с Сравнением - PullRequest
       139

NPoco OrderBy с Сравнением

0 голосов
/ 17 октября 2018

После этого вопроса: Метод расширения OrderBy для NPoco.Linq

и, следовательно, этот вопрос: Естественная сортировка с Dynamic Linq, включающая несколько параметров сортировки

Как выглядит OrderBy с компаратором для NPOCO?Я пытался сопоставить ответы, чтобы создать его сам, но мне не удалось преобразовать Expression.Call с компаратором в Invoke.Я пробовал это до сих пор безрезультатно:

    public static IQueryProvider<T> OrderByField<T, ComparerType>(this IQueryProvider<T> queryProvider, IComparer<ComparerType> comparer, string SortField, bool ascending)
    {
        var param = Expression.Parameter(typeof(T), "p");
        var prop = Expression.Property(param, SortField);
        string methodName = ascending ? "OrderBy" : "OrderByDescending";
        Expression conversion = Expression.Convert(prop, typeof(object));
        LambdaExpression lambda = Expression.Lambda(conversion, param);
        try
        {
            object result = typeof(IQueryProvider<T>).GetMethods().Single(
                    method => method.Name == methodName)
                .Invoke(queryProvider, new object[] { comparer, lambda });

            return (IQueryProvider<T>)result;
        }
        catch(Exception exc)
        {
            return null;
        }

    }
...