Assis avec une nouvelle paire d'yeux et figured it out ... Les tags sont maintenant commandés par un propery sur la collection Question Tags (vues) .. qui a fait beaucoup plus dans mon domaine sence que la commande par le nombre d'enfants
public IList<Tag> GetTop(int numberOfTags)
{
using (ITransaction transaction = Session.BeginTransaction())
{
DetachedCriteria detachedCriteria = DetachedCriteria.For<Tag>()
.CreateCriteria<Tag>(x => x.Questions)
.AddOrder<Question>(x => x.Views, Order.Desc)
.SetMaxResults(numberOfTags)
.SetProjection(Projections.Distinct(Projections.Id()));
IList<Tag> tags = Session.CreateCriteria<Tag>()
.SetFetchMode<Tag>(x => x.Questions,FetchMode.Join)
.Add(LambdaSubquery.Property<Tag>(x => x.Id).In(detachedCriteria))
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Tag>();
transaction.Commit();
return tags;
}
}
Pas exactement ce que je cherchais quelque chose de plus comme ceci: - (Qui échouerait) Session.Linq() .OrderBy (tag => tag.Questions.Count) .ToList(); –