首页 > 解决方案 > 如何在flutter / Dart的List中的where子句中运行IN条件?

问题描述

我正在尝试从具有 IN 条件的列表中恢复数据。我该怎么做这样的事情?谢谢

class Attractive
{
  String name;
  String type;
  Attractive({this.name,this.type});
}

List<Attractive> attraction=[];
attraction.add(name:"Everest",type:"mountain");
attraction.add(name:"Colorado",type:"river");
attraction.add(name:"Kilimanjaro",type:"mountain");
attraction.add(name:"Yellowstone",type:"park");

var listAttractive = attraction.where((element) => element.type in ("mountain","river"));
listAttractive.forEach((item){
print(item.name);
}); 

标签: listflutterdartwhere-clause

解决方案


in关键字用作Iterable在 for 循环中循环的方式。例如:

for (int i in [1, 2, 3]) {
  print(i);
}

它不是对集合是否包含项目的布尔测试。您可以contains在包含要检查的所有元素类型的集合上使用该方法。

class Attractive {
  String name;
  String type;
  Attractive({required this.name, required this.type});
}

void main() {
  List<Attractive> attraction = [];
  attraction.add(Attractive(name: "Everest", type: "mountain"));
  attraction.add(Attractive(name: "Colorado", type: "river"));
  attraction.add(Attractive(name: "Kilimanjaro", type: "mountain"));
  attraction.add(Attractive(name: "Yellowstone", type: "park"));

  var listAttractive = attraction
      .where((element) => {'mountain', 'river'}.contains(element.type));
  listAttractive.forEach((item) {
    print(item.name);
  });
}

推荐阅读