NHibernate的Lambda表达式加入有序集合
-
18-09-2019 - |
题
我有一个实体“人”的人具有朋友(也人实体)的集合
我想要得到的前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。
不隶属于 StackOverflow