使用OData如何对包含列表的属性进行排序?

时间:2017-05-25 18:49:18

标签: asp.net asp.net-web-api odata

这是我需要解决的问题:

我需要显示一个包含一组动态列的网格,这意味着该数字可以根据用户参数而改变。

我在下面附上了一个样本作为图片来说明:

GRID SAME IMAGE

我有这些c#POCO让我的问题变得简单

public class OrderItem
{
    public string ProductName { get; set; }
    public string Status { get; set; }
    public List<CityOrderInfo> CityOrders { get; set; }
}

public class CityOrderInfo
{
    public int OrderCount { get; set; }
}

我有一个web api控制器,它能够接受OData请求,以及存储库接受的其他参数。但问题是,虽然ProductName和Status的参数$ orderby有效,但当我执行“$ orderby ='CityOrders [1] \ OrderCount asc'时,它会失败。

public class OrdersControllers : ApiController
{
    private readonly IOrdersRepository _repository;

    public OrdersControllers(IOrdersRepository repository)
    {
        this._repository = repository;
    }
    public IEnumerable<OrderItem> GetOrderItems([FromUri] ODataQueryOptions<OrderItem> oDataQuery)
    {
        var result = this._repository.GetOrders().ToList();
        var queryableData = oDataQuery.ApplyTo(result.AsQueryable());
        var transformedData = queryableData as IEnumerable<OrderItem>;
        return transformedData;
    }
}

我选择将城市订单列入名单的原因是因为我认为将美国的每个城市作为财产制作POCO太痛苦,所以反而使其更加通用。

问题是如何使用OData对包含列表的属性进行排序?这可能吗?我一直在位置n处得到语法错误。截至目前,我还没有找到答案。

0 个答案:

没有答案