несколько сортировок с общими выражениями мембран

Изменить 2019-01-31: Последнее решение

Я выполнил примеры здесь и здесь , чтобы создать общую сортировку с выражениями-членами, но я не могу понять, как я m предполагается добавить предложение ThenBy или объединить несколько столбцов для сортировки в methodcallexpression. В идеале ThenBy должен идти до пропуска, но он не может, потому что он не может видеть предложение orderby, которое я сделал с помощью methodcallexpression. GridSortExpression - это класс Telerik - он просто описывает, в каком столбце и в каком направлении следует сортировать запрос.

Может ли кто-нибудь пролить свет? Вот что у меня сейчас есть:

Dim exp As Expressions.Expression(Of Func(Of Product_Catalog, Boolean)) = PredicateBuilder.True(Of Product_Catalog)()
exp = exp.And(Function(e) e.Chapter_Price > 30)
Dim sortExpression As New List(Of GridSortExpression)({New GridSortExpression() With {.SortOrder = GridSortOrder.Descending, .FieldName = "Id"}})
If sortExpression.Count = 0 Then
     catalogList = con.Product_Catalogs.AsExpandable.Where(exp).OrderBy(Function(o) o.Item_Type).ThenBy(Function(o) o.Item_Description).Skip(startRowIndex).Take(maximumRows).ToList
Else
     Dim param As ParameterExpression = Expression.Parameter(GetType(Product_Catalog), String.Empty)
     Dim prop As MemberExpression = Expression.PropertyOrField(param, sortExpression(0).FieldName)
     Dim sort As LambdaExpression = Expression.Lambda(prop, param)
     Dim source = con.Product_Catalogs.AsExpandable.Where(exp)
     Dim resultExp As MethodCallExpression
     resultExp = Expression.[Call](GetType(Queryable), "OrderBy" & If(sortExpression(0).SortOrder = GridSortOrder.Descending, "Descending", ""), _
         New Type() {GetType(Product_Catalog), prop.Type}, con.Product_Catalogs.AsExpandable.Where(exp).Expression, Expression.Quote(sort))

     catalogList = source.Provider.CreateQuery(Of Product_Catalog)(resultExp).Skip(startRowIndex).Take(maximumRows).ToList
End If

6
задан dtryan 1 February 2019 в 03:17
поделиться