Упорядочить по количеству отношений в NHibernate - PullRequest
0 голосов
/ 27 июля 2011

У меня есть такая структура данных:

public class User
{
    public Guid Id {get;set;}
    public string Name {get;set;}
    public IList<Books> Books {get;set}
}

Я изо всех сил пытался сделать возможным сортировку пользователей по количеству закладок (отношение один ко многим).

Я пробовал разные подходы с linq, критериями и запросами, но безуспешно, и поэтому надеюсь, что один из вас может помочь.

Я использую пейджинг, так как у меня немалопользователи, поэтому решение должно выполнять запрос на SQL, а не в памяти на веб-сервере.

Ответы [ 2 ]

1 голос
/ 27 июля 2011
var loadedUser = session.Query<User>()
    .Select(u => new { u, u.Books.Count })
    .ToList()
    .OrderBy(anonym => anonym.Count)
    .Select(anonym => anonym.u);

или используя HQL

select user
from User as user 
    left join user.Books as books
group by user
order by count(books)
0 голосов
/ 27 июля 2011

См .: Упорядочить по количеству сборов, используя ICriteria & NHibernate

select u
from User u
join u.Books b
group by u
order by count(b) asc

Или используя LINQ:

users.OrderBy(x => x.Books.Count);
...