Android Realm找到第一个N元素

时间:2016-03-24 10:54:12

标签: android database sqlite realm

如何从Realm数据库中选择第一个N元素。 现在,我使用此代码选择N个元素:

Realm.getDefaultInstance()
.where(MyObject.class)
.findAllSorted("myField", Sort.DESCENDING)

但是这个选择操作太长了。我需要SQL'LIMIT'操作模拟。

4 个答案:

答案 0 :(得分:3)

你可以看看这个 https://github.com/realm/realm-java/issues/544

似乎领域结果是懒惰加载所以你不需要"限制"当使用领域时

答案 1 :(得分:2)

简单

int N=10;   // whatever value you want
Realm mRealm=Realm.getDefaultInstance();

RealmResults<Example> list= mRealm.where(Example.class).findAll();
list.subList(0,N);

答案 2 :(得分:1)

我使用了限制方法, 您应该使用最新版本 classpath "io.realm:realm-gradle-plugin:5.8.0"

RealmResults<YourPOJOClass> realmResults = mRealm.where(YourPOJOClass.class).sort("createdTime").limit(10).findAll();
//here this record will be sorted by ascending order using schema name "createdTime" 
//this will return the 10 rows only.

`

答案 3 :(得分:0)

可能重复因为我已在此处发布了解决方案:Limit Realm results

我找到了解决这个问题的方法,经过这么多天使用&#34;之间的#34;查询在官方文档https://realm.io/docs/java/latest

中找到

如果你想获取前N个元素,只需将数字从,然后传递给字段名称,如下所示

realm.where(clazz).between("count",0,1000).findAll();

其中,

&#34; count&#34; =字段名称(即pojo中的变量名称)
 &#34; 0&#34; =范围来自  &#34; 1000&#34; =范围

例如:上面的查询将首先从RealmResults获取0到1000。

注意:上述解决方案仅在您拥有行计数的唯一ID时才有效。在我的情况下,我在将值插入Realm之前手动插入计数值。