我有一个List<String> ids
,我想要FooRealmObject
列表中包含ID字段的所有ids
。
我可以遍历ids
列表并按ID查询对象,但我希望有一个单行,例如:
realm.where(Foo.class).in("id", ids).findAll();
有什么想法吗?
答案 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();
可能必须使用;;;删除最后一个。或(),但我不确定。