2016-03-24 2 views
2

Как я могу выбрать первый элемент N из базы данных Realm. Теперь я использую этот код, чтобы выбрать N элементов:Android Realm найти первый элемент N

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

Но это выбрать операцию слишком долго. Мне нужно работать с аналоговым оператором SQL LIMIT.

+0

В этом ответе можно найти одно решение: http://stackoverflow.com/a/39689393/2002079 – ahmadalibaloch

ответ

3

Вы можете посмотреть на этой https://github.com/realm/realm-java/issues/544

кажется результаты Realm ленивы загружены, так что вы серовато потребность «предел» при использовании царством

1

Простой

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

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

list.sublist вернет список, который не будет работать как RealmResult. –

+0

да Список будет возвращен .... если вы хотите ReamResults, то жаль нет прямого решения для этого по realm в Android – saksham

0

Возможно дубликата, так как я уже разместил решение здесь: Limit Realm results

Я выяснил решение для achi Накануне это после стольких дней, используя «между» запросом, которые содержатся в официальных документах https://realm.io/docs/java/latest

Если вы хотите получать первые N элементы, просто пройти отсчет от и с именем поля, как показано ниже

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

Где,

"счетчик" = имя поля (т.е. имя переменной в вашем POJO)
"0" = Диапазон От
"1000" = Диапазон до

Например: Вышеприведенный запрос будет извлекать первые 0 до 1000 как RealmResults.

Примечание. Вышеупомянутое решение работает только в том случае, если у вас есть уникальный идентификатор с количеством строк. В моем случае я вручную вставил значение счета перед вставкой значений в Realm.