NHibernate.Linq NHibernate 2.1.2.4000 , . HQL ICriteria NHibernate 3.0, , Linq Select, ToList.
tags
.Select(t = new { t.Name, t.Posts.Count })
.ToList()
.OrderBy(x => x.Count);
, NHibernate.Linq .
, , /, .
EDIT: ICriteria :
var tags = session.CreateCriteria(typeof(Tag), "tag")
.SetProjection(
Projections.GroupProperty("tag.Name"),
Projections.Count("tag.Posts"))
.AddOrder(Order.Asc(Projections.Count("tag.Posts")))
.List();
EDIT: SQL, Arch. . .
var tags = session.CreateCriteria(typeof(Tag), "tag")
.CreateCriteria("tag.Posts", "post")
.SetProjection(
Projections.GroupProperty("tag.Name"),
Projections.Count("post.Id"))
.AddOrder(Order.Asc(Projections.Count("post.Id")))
.List();
SQL, , ...
SELECT this_.Name as y0_, count(post1_.Id) as y1_ FROM Tag this_ inner join Post_Tags posts3_ on this_.Id=posts3_.Tag inner join Post post1_ on posts3_.Post=post1_.Id GROUP BY this_.Name ORDER BY count(post1_.Id) asc