2017-02-15 26 views
0

Имея этот метод, который возвращает список объектов, отфильтрованный по запросуПреобразование SQLite запроса Realm запросы Android

public List<table_People> getPeople(String filter) 
{ 
    List<table_People> items = new ArrayList<>(); 

    filter = filter.trim(); 
    filter = filter.toUpperCase(); 

    String selectQuery = "SELECT * FROM People " + 
      "WHERE (UPPER(LastName || FirstName) LIKE '%" + filter + "%') " + 
      "OR (UPPER(FirstName || LastName) LIKE '%" + filter + "%') "; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      table_People item = new table_People(
        cursor.getInt((cursor.getColumnIndex("ID"))), 
        cursor.getString((cursor.getColumnIndex("FirstName"))), 
        cursor.getString((cursor.getColumnIndex("LastName"))) 
      ); 
      items.add(item); 
     } while (cursor.moveToNext()); 
    } 
    return items; 
} 

Как я могу преобразовать это в Realm запросе?

Прежде всего, у меня есть вопросы о WHERE CLAUSE.

Мне нужно это WHERE CLAUSE, потому что мне нужно искать по FirstName + LastName или LastName + FirstName.

Например, John Smith Smith John возвращение всегда запись.

ответ

0
realm.where(People.class) 
      .beginGroup() 
      .equalTo("FirstName", "John").equalTo("LastName", "Smith") 
      .endGroup() 
      .or() 
      .beginGroup() 
      .equalTo("LastName", "John").equalTo("FirstName", "Smith") 
      .endGroup() 
      .findAll(); 

 Смежные вопросы

  • Нет связанных вопросов^_^