在NHibernate中按关系计数排序

时间:2011-07-27 12:28:38

标签: nhibernate criteria linq-to-nhibernate queryover

我有这样的数据结构:

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

我一直在努力通过书签计数(一对多关系)对用户进行排序。

我已经尝试了linq,条件和查询的各种方法,但没有运气,所以希望你们中的一个可以提供帮助。

我正在使用分页,因为我有很多用户,因此解决方案需要对SQL进行查询,而不是在网络服务器的内存中进行查询。

2 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:0)

请参阅:Order by collection count using 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);