2013-02-12 2 views
1

Как я могу выполнить следующий запрос с помощью NHibernate?Как использовать Max и Group By в запросе NHibernate?

SELECT ClientId, MAX(Id) 
FROM Items 
GROUP BY ClientId; 
+0

Ну, я не знаю слишком много о _NHibernate_, но это зависит от вашего отображения? –

+0

Какой API запросов вы предпочитаете? Запрос (Linq), QueryOver, HQL или ICriteria? – Rippo

+0

Я предпочитаю Linq, но решения в QueryOver или ICriteria тоже были бы прекрасными –

ответ

2

Успел работать его, был более простым, чем я думал, что в конце концов:

  var result = from item in session.Linq<Item>() 
         group item by item.ClientId 
         into itemGroups 
         select new 
          { 
           id = itemGroups.Key, 
           max = itemGroups.Max(er => er.Id) 
          }; 
+0

Там вы, молодцы, вам просто нужно было немного prod! – Rippo

0

См. Главы 14, 15 и 16 ссылки NHibernate для трех API запросов NHibernate.

Вы также можете использовать LINQ-запросы по NHibernate. Это может быть самая простая альтернатива для начала. Используйте метод расширения Query<MyType>() для ISession, чтобы получить IQueryable.