NHibernate 中按关系计数排序

发布于 2024-11-26 11:42:09 字数 354 浏览 3 评论 0原文

我有一个这样的数据结构:

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

我一直在努力使按书签数量(一对多关系)对用户进行排序成为可能。

我尝试过使用 linq、criteria 和 queryover 的各种方法,但没有成功,因此希望你们中的一位能够提供帮助。

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

I have a datastructure like this:

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

I have been struggeling with making it possible to sort the users by the count of bookmarks (one-to-many relation).

I have tried various approaches with both linq, criteria and queryover, but with no luck, and therefore hope one of you could help.

I am using paging, since I have quite a few users, so the solution needs to do the query on the SQL and not in memory on the webserver.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心房敞 2024-12-03 11:42:09
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)
var loadedUser = session.Query<User>()
    .Select(u => new { u, u.Books.Count })
    .ToList()
    .OrderBy(anonym => anonym.Count)
    .Select(anonym => anonym.u);

or using HQL

select user
from User as user 
    left join user.Books as books
group by user
order by count(books)
红尘作伴 2024-12-03 11:42:09

请参阅:使用 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);

See : Order by collection count using ICriteria & NHibernate

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

Or using LINQ :

users.OrderBy(x => x.Books.Count);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文