0

我有一个返回一堆项目的 OData 查询。结果回来看起来像这样:

{
    "d": {
        "__metadata": {
            "id": "http://dev.sp.swampland.local/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)",
            "uri": "http://dev.sp.swampland.local/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)",
            "type": "SP.UserProfiles.PersonProperties"
        },
        "UserProfileProperties": {
            "results": [
                {
                    "__metadata": {
                        "type": "SP.KeyValue"
                    },
                    "Key": "UserProfile_GUID",
                    "Value": "66a0c6c2-cbec-4abb-9e25-cc9e924ad390",
                    "ValueType": "Edm.String"
                },
            {
                "__metadata": {
                    "type": "SP.KeyValue"
                },
                "Key": "ADGuid",
                "Value": "System.Byte[]",
                "ValueType": "Edm.String"
            },
            {
                "__metadata": {
                    "type": "SP.KeyValue"
                },
                "Key": "SID",
                "Value": "S-1-5-21-2355771569-1952171574-2825027748-500",
                "ValueType": "Edm.String"
            }

           ]
        }
    }
}

实际上,UserProfileProperties集合中有很多项目(100 多个)返回,但是我只是在寻找 KEY 与一些项目匹配的几个项目,但我无法确定我需要过滤器的确切内容。我试过 $filter=UserProfileProperties/Key eq 'SID' 但这仍然给了我一切。还试图弄清楚如何拉回多个项目。

想法?

4

1 回答 1

2

我相信您忘记了每个结果如何有一个键,而不是 UserProfileProperties,因此 UserProfileProperties/Key 实际上并不存在。相反,因为 result 是一个数组,您必须检查某个位置(eq.result(1))或使用任何或全部的 oData 函数。

$filter= UserProfileProperties /results/any(r: r/Key eq 'SID')如果您想要所有配置文件,其中只有一个键是 SID 或使用

$filter=UserProfileProperties/results/all(r: r/Key eq 'SID')如果您想要每个结果都有一个等于 SID 的键的配置文件。

于 2015-07-10T14:35:49.113 回答