Группировка Kendo на стороне сервера

Я использую Asp net 5, NHibernate 3.3 и оболочку Kendo UI MVC для сетки, чтобы визуализировать таблицу заказов клиентов. В базе уже много заказов, и их количество постоянно растет. Поэтому я решил использовать подкачку на стороне сервера, чтобы не получать все заказы из базы данных. Насколько я знаю, вы не можете делать пейджинг вручную и делегировать фильтрацию, сортировку и группировку методу ToDataSourceResult. Это либо все, либо ничего. Поэтому я предпринял попытку реализовать так называемые«пользовательская привязка», Нет проблем, пока я не доберусь до группировки. Мне нужно сначала сгруппировать, затем отсортировать внутри группы, затем извлечь данные для конкретной страницы и все это без загрузки всех данных в память. Мой код выглядит примерно так (я собрал все в один кусок, чтобы упростить чтение):

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();

Я буду рад получить любой совет о том, как добавить группировку здесь.

Ответы на вопрос(2)

Ваш ответ на вопрос