我有一个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',但这仍然给了我一切。还试图找出如何撤回多个项目。
想法?
答案 0 :(得分:1)
我相信你忘记了每个结果如何有一个键,而不是UserProfileProperties,所以UserProfileProperties / Key实际上并不存在。相反,因为结果是一个数组,你必须检查某个位置(例如结果(1))或使用任何或所有的oData函数。
尝试 $ filter = UserProfileProperties / results / any(r:r / Key eq'SID')如果您想要只有其中一个键的所有配置文件是SID或使用
$ filter = UserProfileProperties / results / all(r:r / Key eq'SID')如果你想要每个结果都有一个等于SID的密钥的配置文件。