在AngularApp中,我通过OData查询从WebAPI获取数据。
所有结果都有一个日期和一个int状态代码。状态代码可以是1,2,3或4。
我想订购我的结果,所以状态码为1的所有结果都会显示在列表的顶部。代码2,3和4的其余结果按附加到它们的数据排序,而不是状态代码。
可能的?
现在这是我的代码。它只按日期排序,而不是别的。
return Products.query({ $orderby: 'Date' });
答案 0 :(得分:1)
从您的描述中,您可能希望所有StatusCode
为1的产品得到平等对待。也就是说,它们不会按Date
进一步排序。如果您可以稍微放宽此要求并允许按StatusCode
和 Date
对所有产品进行排序,则可以采用直接的解决方案:
return Products.query({ $orderby: 'StatusCode,Date' });
OData v4中的$orderby
query option由"逗号分隔的表达式列表组成,其原始结果值用于对项目进行排序"。属性名称是用于生成排序值的最常用表达式。
如果要反转特定属性的排序,请在该属性上使用desc
后缀,如下所示:
return Products.query({ $orderby: 'StatusCode,Date desc' });