Realm Android运行查询,如果字段包含在List<String>中的值。

0 人关注

这是我的RealmObject。

public class Channel extends RealmObject{
    private String id = "";
    private String name = "";

我试图构建一个查询,在一个字符串列表中的每个字符串都包含(不等于)"name "字段。 我知道我可以对ArrayList使用in()方法,但in()方法是验证字符串是否等于,而不是CONTAINS。

我已经尝试了以下方法。

  • realm.where(Channel.class).rawPredicate("name CONTAINS[c] $0",list.toArray()).findAll() This perform the query only on the first String in "list"
  • realm.where(Channel.class).in("name", list.toArray()).findAll() is performing there search only if the field "name" EQUALS to any of the Strings in the list, where I need it to search if the field CONTAINS any of the values in the List of Strings
  • 有什么办法能像in()那样使用一个方法,但要比较字符串是否等于或包含字段的值?

    5 个评论
    Jay
    代码和问题不匹配;没有------。 List of string - 在问题中--你是指一个通道对象的列表吗?还是......别的什么?请花点时间回顾一下 如何创建一个最小的、可复制的例子 .请更新QUESTION以使其清晰,并添加相关的代码,我们会看一看!
    嘿 @Jay 我想你误解了我的问题,或者我写错了,字符串列表是要搜索的查询,所以列表将由不同的名字构建,任何名字与列表中任何字符串相匹配或包含的通道对象就是我试图实现的查询。
    Jay
    让我告诉你,你有一个存储在Realm中的通道对象,其名称属性包含一个名字 "Jay"、"Cindy"、"Larry "等。你想查询这些对象中任何包含字母 "J "或 "L "的名字。对吗?
    这是正确的,我已经用我已经尝试过的完整例子编辑了我的问题。
    Jay
    我们需要更清楚一些,因为问题仍然没有显示任何类型的List或数组对象。请包括包含 Channel (或不管它是什么)对象的列表的对象--可能有一个非常简单的解决方案,但我们需要看到该代码。
    android
    realm
    realm-java
    ia244
    ia244
    发布于 2022-02-22
    1 个回答
    Zen
    Zen
    发布于 2022-03-18
    已采纳
    0 人赞同

    try this

    RealmQuery<Channel> tasksQuery = realm.where(Channel.class).beginGroup();