按DSC或DESC变量排序的会议室DAO [英] Room DAO Order By ASC or DESC variable

查看:137
本文介绍了按DSC或DESC变量排序的会议室DAO的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to make a @Query function in my @Dao interface which has a boolean parameter, isAsc to determine the order:

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

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

Apparently this isn't allowed. Is there a work around here?

使用两个查询(以下)似乎很奇怪,因为唯一的区别是 ASC DESC :

It seemed odd to use two queries (below) since the only difference is ASC and 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();

推荐答案

SQLite 使用 CASE Expression Room DAO 中实现此目的,

Use CASE Expression for SQLite to achieve this in Room 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);

这篇关于按DSC或DESC变量排序的会议室DAO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆