Flutter中带有whereIn条件的过滤器列表?

Posted

技术标签:

【中文标题】Flutter中带有whereIn条件的过滤器列表?【英文标题】:Filter list with whereIn condition in Flutter? 【发布时间】:2021-07-25 10:49:29 【问题描述】:

此代码示例运行良好。

var box = await Hive.openBox<MainWords>('mainWords');
box.values.where((item)  
      return item.category == "6" || item.category == '13';
    ).toList();

我正在尝试使用 whereIn 条件过滤列表,但它必须像过滤器一样过滤

List<String> categoryList = ['6', '13'];
var box = await Hive.openBox<MainWords>('mainWords');
box.values.where((item)  
      return item in categoryList; // just an examle
    ).toList();

我怎样才能做到这一点?

【问题讨论】:

可能是categoryList.contains(item)?,您是否尝试根据categoryList 过滤值?请说明您要做什么 【参考方案1】:

您不应该使用关键字in,而是使用方法contains 来检查您的item 是否存在于categoryList 中。此外,您无法比较不同类型的值,我看到您返回的是 box.valuesIterable&lt;MainWords&gt;

我不知道这个类的内容,但是item 变量是MainWords 类型,所以不能直接与String 对象比较。

我假设您可以访问您的班级 MainWords 中的 String 值,因此您需要将此值与您的列表进行比较。

代码示例

List<String> categoryList = ['6', '13'];
var box = await Hive.openBox<MainWords>('mainWords');

// As I don't know what are MainWords' properties I named it stringValue.
box.values.where((item) => categoryList.contains(item.stringValue)).toList();

【讨论】:

以上是关于Flutter中带有whereIn条件的过滤器列表?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中带有bloc的无限列表(表示层中的列表长度不变)

Flutter Cloud Firestore whereIn 子句

条件字符串中带有符号的 Codeigniter 查询

python中带有元组列表的字符串列表的条件笛卡尔积的单线

带有过滤条件项的列表视图构建器分页(颤振)

雄辩的子查询中的 whereIn 函数不会过滤任何记录