会议室DAO按ASC或DESC排序

aLL*_*aLL 5 android dao android-room

我试图@Query在我的@Dao接口中创建一个具有布尔参数的函数,isAsc以确定顺序:

@Query("SELECT * FROM Persons ORDER BY first_name (:isAsc ? ASC : DESC)")
List<Person> getPersonsAlphabetically(boolean isAsc);
Run Code Online (Sandbox Code Playgroud)

显然,这是不允许的。这附近有工作吗?

编辑:

使用两个查询(如下)似乎很奇怪,因为唯一的区别是ASCDESC

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
Run Code Online (Sandbox Code Playgroud)

Cha*_*rma 35

使用CASE ExpressionSQLite的在实现这个房间DAO

@Query("SELECT * FROM Persons ORDER BY 
        CASE WHEN :isAsc = 1 THEN first_name END ASC, 
        CASE WHEN :isAsc = 0 THEN first_name END DESC")
List<Person> getPersonsAlphabetically(boolean isAsc);
Run Code Online (Sandbox Code Playgroud)


jus*_*ust 8

创建两个查询,一个使用 ASC,一个使用 DESC。

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说似乎很奇怪,创建了两个查询,其中唯一的区别是 ASC 和 DESC (9认同)