Agrupamento do lado do servidor da grade Kendo

Estou usando o Asp net 5, NHibernate 3.3 e o Kendo UI MVC wrapper para grade para renderizar a tabela de pedidos do cliente. Já existem muitos pedidos no banco de dados e o número está crescendo constantemente. Por isso, decidi usar a paginação no lado do servidor para evitar buscar todos os pedidos do banco de dados. Tanto quanto sei, você não pode fazer a paginação manualmente e delegar a filtragem, classificação e agrupamento ao método ToDataSourceResult. É tudo ou nada. Por isso, tentei implementar os chamados'ligação personalizada'. Não tem problema até eu chegar ao agrupamento. Preciso agrupar primeiro, depois classificar dentro de um grupo e extrair dados para uma página específica e tudo isso sem carregar todos os dados na memória. Meu código é algo assim (coloquei tudo em uma única peça para simplificar a leitura):

var orderList = CurrentSession.QueryOver<Order>();

// Filtering. Filter is a search string obtained from DataSourceRequest
var disjunction = new Disjunction();
disjunction.Add(Restrictions.On<Order>(e => e.Number).IsLike("%" + filter + "%"));
disjunction.Add(Restrictions.On<Order>(e => e.Customer).IsLike("%" + filter + "%"));
orderList = orderList.Where(disjunction);

// Sorting. sortColumn is also from DataSourceRequest
switch (sortColumn)
{
        case "Number":
            orderList = orderList.OrderBy(x => x.Number).Desc;
            break;
        case "GeneralInfo.LastChangeDate":
            orderList = orderList.OrderBy(x => x.LastChangeDate).Desc;
            break;
        default:
            orderList = orderList.OrderBy(x => x.Number).Desc;
            break;
     }
}

// Total is required for kendo grid when you do paging manually
var total = orderList.RowCount();


var orders = orderList
    .Fetch(x => x.OrderGoods).Eager
    .Fetch(x => x.OrderComments).Eager
    .Fetch(x => x.Documents).Eager
    .Fetch(x => x.Partner).Eager
    .Skip((request.Page - 1)*request.PageSize).Take(request.PageSize).List();

Ficarei feliz em ter algum conselho sobre como adicionar agrupamentos aqui.

questionAnswers(2)

yourAnswerToTheQuestion