我有这样的数据结构:
public class User
{
public Guid Id {get;set;}
public string Name {get;set;}
public IList<Books> Books {get;set}
}
我一直在努力通过书签计数(一对多关系)对用户进行排序。
我已经尝试了linq,条件和查询的各种方法,但没有运气,所以希望你们中的一个可以提供帮助。
我正在使用分页,因为我有很多用户,因此解决方案需要对SQL进行查询,而不是在网络服务器的内存中进行查询。
答案 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);