通过集合中提供的 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();
我有一个 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();