Как и в этом примере, я бы хотел отфильтровать коллекцию в «Порядке».
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 ... / Клиенты? $ Expand = Orders ($ filter = Articles / Category eq 'Cookies') , я получу сообщение об ошибке
Родительским значением для доступа к свойству «Категория» не является
единственное значение. Доступ к собственности может быть применен только к одному значению.
Но я могу использовать такую конструкцию, как: ... / Клиенты? $ Expand = Orders ($ filter = Articles / any (a: a / Category eq 'Cookies')) *
Проблема с any или all заключается в том, что он фильтрует данные о паранте, основываясь на дочерних элементах. После того, как «статьи» с «категорией» существуют, будут возвращены все статьи. Но я хочу уменьшить дочерние элементы, чтобы показывать только статьи категории «cookie».