Odata 是否支持“not in”运算符?

cha*_*bra 1 api odata

我正在尝试在 odata 中使用not in运算符。那么支持还是不支持呢?

如果是的话,请举一些例子。

我正在阅读这篇文章并尝试但没有成功。 https://github.com/OData/odata.net/issues/1478

Chr*_*ler 10

链接的 git hub 问题https://github.com/OData/odata.net/issues/1478 中的评论实际上表明NOT IN的支持多种变化,即使没有一个运算符。

OData v4 的 .Net 实现确实支持谨慎定义值数组的IN 运算符,它不支持NOT-IN样式运算符,但确实支持NOTIN

NOT只是简单地否定表达式结果,但我们也可以NOT通过将表达式结果等同于 来复制该功能false

我找不到可供共享的公开可用示例,但我的本地项目在执行以下查询时没有任何问题:

尽管是多余的,但第二个查询表明 的结果IN是一个布尔表达式,并且您可以使用更多条件进一步链接该表达式。

    ~/OData/Facilities?$filter=Entity/Title in ('Abbotsford','test')
    ~/OData/Facilities?$filter=Entity/Title in ('Abbotsford','test') eq true
Run Code Online (Sandbox Code Playgroud)

返回:

{
    "@odata.context": "http://localhost:16486/odata/$metadata#Facilities(FacilityType,Id,Entity(Title))",
    "value": [
        {
            "FacilityType": "None",
            "Id": 1081,
            "Entity": {
                "Title": "Abbotsford"
            }
        },
        {
            "FacilityType": "None",
            "Id": 2009,
            "Entity": {
                "Title": "test"
            }
        },
        {
            "FacilityType": "None",
            "Id": 8046,
            "Entity": {
                "Title": "test"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

不在

~/OData/Facilities?$filter=not(Entity/Title in ('Abbotsford','test'))
~/OData/Facilities?$filter=Entity/Title in ('Abbotsford','test') eq false
Run Code Online (Sandbox Code Playgroud)
{
    "@odata.context": "http://localhost:16486/odata/$metadata#Facilities(FacilityType,Id,Entity(Title))",
    "value": [
        {
            "FacilityType": "None",
            "Id": 1065,
            "Entity": {
                "Title": "Sleepy Hollow Templestowe Lower"
            }
        },
        {
            "FacilityType": "None",
            "Id": 13076,
            "Entity": {
                "Title": "Peach Meadows"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果您的模型具有可寻址集合或数组