2

我一直在使用以下代码对域的结果进行排序

vpisort.sort{it.price}

我想知道我是否可以使用类似的东西

vpisort.sort{it.price-it?.discount}

4

2 回答 2

5

我找到了这个帖子。您可以尝试在您的情况下使用它:

vpisort.sort { a, b -> a.price <=> b.price ?: a?.discount <=> b?.discount }

它首先比较价格,然后只有当 a 和 b 按价格相等且结果为零时,才使用 Elvis 运算符比较 a 和按折扣。

于 2012-04-30T07:12:15.937 回答
1

嗯。这不是一个 grails,而是一个时髦的问题。考虑到这一点,解决方案很简单:

打开 groovy 控制台并尝试一下。或查看以下示例:

http://groovy.codehaus.org/JN1015-Collections

SO上还有另一个像这样的问题:

Groovy list.sort 按第一个,第二个,然后是第三个元素

希望有帮助!

更新:如果您想为您的域类设置默认排序顺序,请查看此 GORM 功能:http://grails.org/doc/latest/guide/single.html#ormdsl(5.5.3 默认排序顺序)

于 2012-04-30T07:11:25.543 回答