定制订单搭配odata?

时间:2016-03-06 18:55:58

标签: javascript angularjs odata

在AngularApp中,我通过OData查询从WebAPI获取数据。

所有结果都有一个日期和一个int状态代码。状态代码可以是1,2,3或4。

我想订购我的结果,所以状态码为1的所有结果都会显示在列表的顶部。代码2,3和4的其余结果按附加到它们的数据排序,而不是状态代码。

可能的?

现在这是我的代码。它只按日期排序,而不是别的。

return Products.query({ $orderby: 'Date' });

1 个答案:

答案 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' });