Как мы можем получить результат Odata $ expand с подзапросом в расширенном результате - PullRequest
0 голосов
/ 27 февраля 2020

Имея следующую модель

  public class Product {
     public string Barcode { get; set; }
     public double Price { get; set; }
     public Category Category { get; set; }
  }

  public class Category {
     public string Name { get; set; }
     public string department { get; set; }
  }

Теперь проблема в том, что я не могу использовать подзапрос в опции запроса $ expand. Здесь я привел простой пример, но на самом деле я должен выполнить какой-то сложный запрос как подзапрос.

В настоящее время я получаю это:

"value": [
  {
     "Price": 500,
     "Category": {
        "Name": "Cricket bat"
        "Department": 235
     }
  }

]

Ожидаемый результат:

"value": [
  {
     "Price": 500,
     "Category": {
        "Name": "Cricket bat"
        "Department": "Sport" //This result I want to get using subquery.
     }
  }

Табличная структура подзапроса-

Department Table
--------------------------------------------
DepCode |Id     |Seq        |ValueData
235     |1      |0          |1
235     |1      |1          |2
235     |2      |0          |Sport
235     |2      |1          |Food
--------------------------------------------


SubQuery:

select d2.ValueData
from department d1
left join department d2 on d2.id=2 
                        and d1.DepCode = d2.DepCode 
                        and d1.Seq = d2.Seq
where d1.DepCode=235 
      and d1.ValueId=1 
      and d1.ValueData=1

В БД я получаю значение 1 (d1.ValueData = 1) и, используя приведенный выше запрос, мне нужно получить "Sport" .

Запрос Odata: / odata / Product? $ Expand = Category & $ select = Цена

Как мне добиться этого с помощью odata?

1 Ответ

0 голосов
/ 27 февраля 2020

Если я правильно понял, вы можете использовать опцию вложенного запроса в $ expand для выполнения подзапроса как

/odata/Product?$expand=Category($select=Department)&$select=Price

, вы можете получить:

"value": [
  {
     "Price": 500,
     "Category": {
             "Department": "Sport"
     }
  }

Обратите внимание:

1) $ expand может вкладывать "$ filter, $ orderby, $ top, $ skip, $ select, $ expand ..."

2) В последней версии , $ select также может вкладывать «$ filter, $ orderby, $ top, $ skip, $ select».

Спасибо, надеюсь, это поможет вам.

...