OData — Как фильтровать дочерние элементы?

#filter #odata

Вопрос:

У нас есть конечная точка, где полезная нагрузка выглядит следующим образом:

 {
  "@odata.context": "http://localhost/AbcWebApi/v1.0/-/ABC/AP/$metadata#APDistributionSets/$entity",
  "DistributionSetKey": "CC",
  "Description": "Credit cards",
  "Status": "Active",
  "InactiveDate": null,
  "DateLastMaintained": "2010-08-18T00:00:00Z",
  "CodeType": "Purchase",
  "DistributionMethod": "Manual",
  "DistributionsEntered": 3,
  "Currency": "CAD",
  "DistributionSetDetails": [
    {
      "DistributionSet": "CC",
      "LineNumber": 1,
      "DistributionCode": "VISA",
      "Description": "VISA card",
      "GLAccount": "1022",
      "Discountable": "Yes",
      "Percentage": 0,
      "Amount": 0,
      "UpdateOperation": "Unspecified"
    },
    {
      "DistributionSet": "CC",
      "LineNumber": 2,
      "DistributionCode": "MASTER",
      "Description": "Mastercard",
      "GLAccount": "1023",
      "Discountable": "Yes",
      "Percentage": 0,
      "Amount": 0,
      "UpdateOperation": "Unspecified"
    },
    {
      "DistributionSet": "CC",
      "LineNumber": 3,
      "DistributionCode": "AMEX",
      "Description": "American Express",
      "GLAccount": "1021",
      "Discountable": "Yes",
      "Percentage": 0,
      "Amount": 0,
      "UpdateOperation": "Unspecified"
    }
  ],
  "UpdateOperation": "Unspecified"
}
 

В принципе, существует ключ дистрибутива под названием CC. А в разделе CC есть различные дочерние элементы, такие как VISA, AMEX, MC и т. Д. Могу ли я отфильтровать по VISA, которая является кодом распространения?

Вот что я попробовал: http://localhost/AbcWebApi/v1.0/-/ABC/AP/APDistributionSets?$фильтр=(детали дистрибутива/код дистрибутива eq ‘VISA’)

И это ошибка, которую я получаю: «Родительское значение для доступа к свойству свойства «Код распределения» не является единственным значением. Доступ к свойствам может быть применен только к одному значению».

Есть какие-нибудь советы? Спасибо.

Комментарии:

1. Какую версию OData вы используете? Это служба, которую вы запускаете, или служба, к которой вы делаете запросы?

2. Я использую OData 4.0. Это услуга, к которой я обращаюсь с запросами. Спасибо.