我有一个实体“人”的人具有朋友(也人实体)的集合

我想要得到的前10个朋友特定的人,通过LatestLogin有序的。

我尽力而为是:

    public static IList<Person> GetFriends(Person person, int count)
    {
        Person personAlias = null;
        Person friendAlias = null;

        ICriteria criteria = NHibernateSessionManager.Instance.GetSession()
            .CreateCriteria(typeof (Person), () => personAlias)
            .CreateCriteria(() => personAlias.Friends, () => friendAlias, JoinType.LeftOuterJoin)
            .AddOrder(() => friendAlias.LatestLogin, Order.Desc)
            .Add<Person>(p => p.ID == person.ID)
            .SetMaxResults(count);
        return criteria.List<Person>();
    }

这是否抓住所有的用户朋友们,但他们没有被LatestLogin排序。任何想法?

有帮助吗?

解决方案

我知道这听起来奇怪,但该解决方案是改变行:

.AddOrder(() => friendAlias.LatestLogin, Order.Desc)

使用:

.AddOrder(() => personAlias.LatestLogin, Order.Desc)

您必须看到周围它的其他方式,以了解为什么这是必要的,而不是明显的开头。

您的请求具有相同的 '父' 的朋友(friendAlias)与ID Person对象(personAlias)== person.ID(。新增(P => p.ID == person.ID)),因此您需要排序由personAlias.LatestLogin而不是friendAlias.LatestLogin。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top