通过集合中提供的ID查询对象的域

时间:2015-08-26 16:02:59

标签: android realm

我有一个List<String> ids,我想要FooRealmObject列表中包含ID字段的所有ids

我可以遍历ids列表并按ID查询对象,但我希望有一个单行,例如:

realm.where(Foo.class).in("id", ids).findAll();

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

现在领域已经支持你想要的功能。

在Realm Java 1.2.0中添加。 (https://github.com/realm/realm-java/issues/841

现在你可以完全按照自己的意愿行事:

realm.where(Foo.class).in("id", ids).findAll();

答案 1 :(得分:2)

正如杰里米所说,查询参数列表是不可能的(目前),但他的回答根本不起作用。

这是我使用的解决方法:

    List<String> ids = ...;

    Realm realm = Realm.getInstance(mContext);
    RealmQuery<Foo> query = realm.where(Foo.class);

    for (int i = 0; i < ids.size() - 1; i++) {
        query = query.equalTo("id", ids.get(i)).or();
    }
    query = query.equalTo("id", ids.get(ids.size() - 1));

    RealmResults<Foo> foos = query.findAll();

答案 2 :(得分:0)

我不相信根据文档有一种方法可以像这样查询。您可以执行以下操作:

RealmQuery query = realm.where(Foo.class);
for (String id : ids) {
    query.equalTo("id", id).or();
}
query.findAll();

可能必须使用;;;删除最后一个。或(),但我不确定。