我正在使用squeryl,我有一个列表(query.toList
)。这些类有一个我想要排序的属性(“状态”),但我想按顺序排序,我认为这不是按字母顺序或数字排序。例如,如果有3个类的列表:
(<Foo1>, <Foo2>, <Foo3>)
Foo1.status被暂停,Foo2被批准,Foo3被拒绝,排序后它变成了:
(<Foo2>, <Foo3>, <Foo1>)
我希望首先获得批准,暂停最后,批准后拒绝等。只需任意订购。我不确定如何做得很好。我可以做多个查询并手动构建它就像获得所有批准,然后全部被拒绝并附加到该列表,获得所有被挂起的附加,等等但这似乎超重
答案 0 :(得分:4)
您应该使用sortBy
。然后,您可以实现自定义Ordering[Status]
,或者只是将您的状态转换为自然排序的其他类型(如int)。例如:
list.sortBy { f =>
f.status match {
case Approved => 0
case Rejected => 1
case Suspended => 2
}
}