Я использую NHibernate для запроса таблицы с кортежами в формате: (String, Int?), Где целые числа могут быть нулевыми. Итак, я хочу сгруппировать результаты по номеру, а затем отсортировать по алфавиту. Я могу легко сделать это после того, как получу результаты запроса, но я бы хотел, чтобы NHibernate сформулировал запрос, который это делает. Вот пример результатов, которые мне бы хотелось:
альфа, 1
дельта, 4
гольф, 3
Отель, 2
Лима, 5
Чарли, 0
тета, 0
бета, ноль
эхо, ноль
Три группы, которые я ищу: (int> 0), (int == 0) и (int = null). Вот запрос, который я использую:
var devices = session.QueryOver<Table>()
.OrderBy(item => item.Number).Desc
.OrderBy(item => item.Name).Asc
.List();
В настоящее время я сортирую их после выполнения запроса следующим образом:
List<Table> sortedDevices = devices.OrderBy(item => item.Name).Where(item => item.Number > 0).ToList();
sortedDevices = sortedDevices.Concat(devices.OrderBy(item => item.Name).Where(item => item.Number == 0).ToList()).ToList();
sortedDevices = sortedDevices.Concat(devices.OrderBy(item => item.Name).Where(item => item.Number == null).ToList()).ToList();
Можно ли заставить NHibernate группировать запросы, подобные этой?