我有一个领域数据库,其中的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
.......
现在,我只希望仅在
postCategories
包含Semester - I
或Semester - II
或Semester - III
或Semester - IV
任何一个的地方过滤RealmResults。我该怎么办?我尝试了以下代码来查找
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
。但这似乎不是一个好的解决方案。请帮助我找到更合适的解决方案。谢谢。任何帮助将不胜感激。
最佳答案
要选择第一学期或第二学期或第三学期或第四学期,请尝试按模式进行过滤,即在一则帖子中不要包含2个“学期-I”
realmTitles = realm
.where(RealmTitle.class)
.contains("postCategories", "Semester - I")
.and().not().like("postCategories", "*Semester - I*Semester - *")
.findAll();
如果排除第四学期很重要
realmTitles = realm
.where(RealmTitle.class)
.contains("postCategories", "Semester - I")
.and().not().like("postCategories", "*Semester - I*Semester - *")
.and().not().contains("postCategories", "Semester - IV")
.findAll();
如果您只想拥有那些只有第一学期的课程:
realmTitles = realm
.where(RealmTitle.class)
.like("postCategories", "*Semester - I")
.or().contains("postCategories", "Semester - I,")
.and().not().like("postCategories", "*Semester - *Semester - *")
.findAll();