类似于此示例,我想过滤“订单”中的集合。 http://odata.github.io/WebApi/04-03-filter-in-expand/
假设我们有以下模型:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Article> Articles { get; set; }
}
public class Article
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
如果我调用以下URI ... / Customers?$ expand = Orders($ filter = Articles / Category eq'Cookies') ,我收到一条错误消息,说
属性“ Category”的属性访问的父值不是 一个值。属性的访问只能被应用到一个单一的值。
但是我可以使用以下结构: ... / Customers?$ expand = Orders($ filter = Articles / any(a:a / Category eq'Cookies'))
任何或全部的问题在于,它正在基于子级过滤父数据。如果“文章”与“类别”存在,则将返回所有文章。但我想减少子项,以仅显示“ cookie”类别的文章。
答案 0 :(得分:0)
我认为您需要使用两个嵌套的不同any
,如果我理解您的话,则想过滤Articles
类别中的所有Cookies
,我认为您需要:
.../Customers?$filter= Orders/any(o: o/Articles/any(p: p/Category eq 'Cookies'))
如果Customers
的Cookie为Orders
,它将为您提供所有Orders
的{{1}} >
致谢。