Запрос фильтра RealmResults с точной строкой - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть база данных областей, где поле postCategories содержит данные произвольного типа строки, полученные с сервера через JSON.Эти строковые значения выглядят примерно так:

Semester - I, Marketing, English Version, Short Question
B.Com., Semester - II, E-Commerce, English Version, Broad Question
Semester - III, Marketing, English Version, Short Question
Semester - IV, Company Law, Bengali Version, Short Question
.......

Теперь я хочу отфильтровать RealmResults только там, где postCategories содержит Semester - I или Semester - II или Semester - III или Semester - IV любого, отдельно,что мне делать?

Я попробовал следующие коды, чтобы найти все данные, где postCategories содержит Semester - I:

RealmResults<RealmTitle> realmTitles;
realmTitles = realm.where(RealmTitle.class)
            .contains("postCategories", "Semester - I").findAll();

, но это дает все данные Semester - I, Semester - II, Semester - III и Semester - IV.

Я могу найти временное решение следующим образом.

realmTitles = realm.where(RealmTitle.class)
                .contains("postCategories", "Semester - I")
                .and().not()
                .contains("postCategories", "Semester - II").findAll();

Это предотвращает добавление Semester - II с Результатом.Но это не похоже на хорошее решение.Пожалуйста, помогите мне найти более подходящее решение этого вопроса.

Спасибо.Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 25 сентября 2018

Чтобы выбрать семестр I или II, или III, или IV, попробуйте выполнить фильтрацию по шаблону, т. Е. Не иметь 2 «семестр-I» в одной записи. Категории:

realmTitles = realm
   .where(RealmTitle.class)
   .contains("postCategories", "Semester - I")
   .and().not().like("postCategories", "*Semester - I*Semester - *")
   .findAll();

Если важно исключить семестр IV

realmTitles = realm
   .where(RealmTitle.class)
   .contains("postCategories", "Semester - I")
   .and().not().like("postCategories", "*Semester - I*Semester - *")
   .and().not().contains("postCategories", "Semester - IV")
   .findAll();

Если вы хотите иметь только те, которые имеют, например, только семестр I:

realmTitles = realm
   .where(RealmTitle.class)
   .like("postCategories", "*Semester - I")
   .or().contains("postCategories", "Semester - I,")
   .and().not().like("postCategories", "*Semester - *Semester - *")
   .findAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...