如何对具有次要值的列表进行排序-那么该列表首先按一个值排序,然后对于第一个值的重复项,然后按次要值对列表进行排序?基本上,我需要使用orderby valueOne,valueTwo在SQL查询中获得的功能。
valueOne和valueTwo都是整数。
我可以使用以下单个值进行排序:
list.sort((a, b) => a.listValueOne.compareTo(b.ListValueOne));
答案 0 :(得分:1)
import 'package:enumerable/enumerable.dart';
void main(List<String> args) {
var strings = ['a', 'c', 'b', 'ccc', 'aaa'];
var query = strings.orderByDescending((s) => s.length).thenBy((s) => s);
print(query.toList());
}
结果:
[aaa, ccc, a, b, c]
另一个示例(三重排序):
import 'package:enumerable/enumerable.dart';
void main(List<String> args) {
final persons = [
Person('Jack', 'Alabama', 33),
Person('Adam', 'Florida', 21),
Person('Jack', 'Nevada', 10),
Person('Harry', 'California', 17),
Person('Jack', 'Alabama', 10),
];
final q = persons
.orderBy((p) => p.name)
.thenBy((p) => p.state)
.thenBy((p) => p.age);
print(persons);
print(q);
}
class Person {
int age;
String name;
String state;
Person(this.name, this.state, this.age);
String toString() => '$name-$state-$age';
}
结果:
[Jack-Alabama-33, Adam-Florida-21, Jack-Nevada-10, Harry-California-17, Jack-Alabama-10] (Adam-Florida-21, Harry-California-17, Jack-Alabama-10, Jack-Alabama-33, Jack-Nevada-10)