这里有点疯狂,试图对以下内容进行多重排序。
case class WeeklyResults(
schedule: Schedule,
result: GameResult
)
val games = // returns correctly sorted List of WeeklyResults
repo.gameresult.findAllByDate(date)
当我在比赛日期分组(以显示每个比赛日的比赛日期标题)和 id(将主/客队对分组)作为未排序的地图返回时,事情出错了,有趣 ;-)
val unsorted = // Map[JodaTime, Iterable[List[WeeklyResults]]]
games.groupBy(_.schedule.gameDate).mapValues(_.groupBy(_.schedule.id).values)
好吧,ListMap 是获取排序地图的一种方法,让我们尝试一下,以毫秒为单位对游戏日期 JodaTime 进行排序。
val sorted =
ListMap(unsorted.toList.sortBy(_._1.getMillis):_*)
很好,游戏按正确的顺序在游戏日期标题下排序......但是,每个游戏日内的游戏都是随机排序的;-(
所以,问题是,到底如何才能同时按游戏日期和游戏结果 id排序?(其中 id 是游戏结果表的 PK,实际上是 DB 级别的排序顺序)
我尝试了各种无效的组合:
unsorted.flatMap{x=>
ListMap(
Seq( (x._1, x._2.map(_._2.sortBy(_.result.id))) ).sortBy(_.1.getMillis)
:_*)
}
不管我做什么,Iterable[List[WeeklyResults]]
剩下的未分类
非常感谢您的想法,我束手无策,整个上午就这样过去了