2017-01-25 73 views
1

查詢功能之間使用我使用的境界數據庫爲我的Android應用程序。我想知道如何使用名爲「between」的查詢來獲取字符串。例如如何境界數據庫

final RealmResults<PersonModel> list = myRealm. 
        where(PersonModel.class).between("name","A","E").findAll(); 

它不適用於我已使用的字符串。但其工作只適用於int類型。有人可以幫幫我嗎。

+0

以下運營商可以不賭申請的字符串所以什麼ü可以做些什麼來增加額外的字段,可以AB整數,這樣你們就可以使用這些類型的操作 – Tony

+0

你能不能給我一個例子 –

回答

-2

根據https://realm.io/docs/java/latest/api/io/realm/RealmQuery.html查詢不具有接受字符串作爲參數之間的方法。通常可以用一對小於和大於一個的運算符來替換,但這些運算符也不支持字符串。所以,如果你想按照字典順序對字符串進行處理,唯一的辦法就是根本排除它們之間的差異,並在java中進行過濾。

例子:

final RealmResults<PersonModel> list = Realm.getDefaultInstance().where(PersonModel.class).findAll(); 
Collection<PersonModel> betweenModels = new ArrayList<>(); 
for (PersonModel m : list) { 
    if(m.getName().compareTo("A") >= 0 && m.getName().compareTo("E") <= 0) { 
     betweenModels.add(m); 
    } 
} 

betweenModels將包含名稱不是「A」相等規模更大,「E」,等於少的項目按字典

+0

你能給我請 –

+0

我添加了一個例子例子來回答 –

+0

對誰downvoted我的答案,你可以提供更好的(如果有的話)的答案或至少解釋downvoting的原因? –

0
final RealmResults<PersonModel> list = myRealm 
        .where(PersonModel.class) 
        .beginsWith("name","A") 
         .or().beginsWith("name","B") 
         .or().beginsWith("name","C") 
         .or().beginsWith("name","D") 
         .or().beginsWith("name","E") 
        .findAllSorted("name", Sort.ASCENDING);