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

Query Realm for objects by IDs provided in a collection

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

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

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

有什么想法吗?

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

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

可能必须使用 ;;; 遍历它删除最后一个 .or() 但我不确定。

正如 Jeremy 提到的,使用参数列表查询是不可能的(目前),但他的回答根本不起作用。

这是我使用的解决方法:

    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();

现在realm已经支持你想要的功能了。

领域 Java 1.2.0 中添加。 (https://github.com/realm/realm-java/issues/841)

现在您可以随心所欲了:

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