Фильтровать по вложенному свойству в веб-интерфейсе API - PullRequest
0 голосов
/ 17 октября 2018

У меня есть некоторые проблемы в фильтре Odata с вложенным свойством,

Контроллер:

[HTTPGet]
[EnableQuery]
public async Task<IQueryable<MyObj>> GetData()
{
    return await GetUserData();
}

Вывод из веб-приложения для запроса get url,

GET https://sample.com/IB

[{
        "Id": "1",
        "FirstName": "Alex",
        "School": [
            {
                "SchoolId": "Sc1",
                "Roles": [
                    {
                        "Role": "ROOT",
                    }
                ],
                "Email": "abc@xyz.com"
            }
        ]
    },    
    {
        "Id": "2",
        "FirstName": "Mage",
        "School": [
            {
                "SchoolId": "Sc2",
                "Roles": [
                    {
                        "Role": "Admin",
                    }
                ],
                "Email": "abc@xyz.com"
            }
        ]
    }]

Как получить результаты школы, где SchoolId = "Sc2"

Я пробовал с нижеприведенным URL,

GET https://sample.com/IB?$expand=School&$filter=School/SchoolId eq 'Sc2'

, но я получил следующее сообщение об ошибке,

{
    "Message": "The query specified in the URI is not valid. The parent value for a property access of a property 'SchoolId' is not a single value. Property access can only be applied to a single value."
}

Есть мысли?

1 Ответ

0 голосов
/ 30 апреля 2019

Поздний ответ, но вам нужно идти за сбором с помощью оператора lambda any.

https://sample.com/IB?$expand=School&$filter=School/Any (c:c/SchoolId eq 'Sc2')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...