如何对具有次要值的列表进行排序-那么该列表首先按一个值排序,然后对于第一个值的重复项,然后按次要值对列表进行排序?基本上,我需要使用orderby valueone,valueTwo在SQL查询中获得的功能。
valueone和valueTwo都是整数。
我可以使用以下单个值进行排序:
list.sort((a,b) => a.listvalueOne.compareTo(b.ListvalueOne));
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),];
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,Jack-Alabama-10,Jack-Alabama-33,Jack-Nevada-10)