OrderBy /按Flutter / Dart中的次要值对列表进行重复

如何对具有次要值的列表进行排序-那么该列表首先按一个值排序,然后对于第一个值的重复项,然后按次要值对列表进行排序?基本上,我需要使用orderby valueone,valueTwo在SQL查询中获得的功能。

valueone和valueTwo都是整数。

我可以使用以下单个值进行排序:

list.sort((a,b) => a.listvalueOne.compareTo(b.ListvalueOne));
nanersan 回答:OrderBy /按Flutter / Dart中的次要值对列表进行重复

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)
本文链接:https://www.f2er.com/3136068.html

大家都在问