2013-09-20 2 views
1

У меня есть рабочий запрос REST, который возвращает большую коллекцию результатов. (Обрезается здесь)Фильтр OData REST для глубоко вложенных данных

оригинальный URL является:

http://intranet.domain.com//_api/SP.UserProfiles.PeopleManager/GetPropertiesFor([email protected])[email protected]='domain\kens'&$select=AccountName,DisplayName,Email,Title,UserProfileProperties 

Отклик:

{ 
"d": { 
    "__metadata": { 
     "id": "stuff", 
     "uri": "morestuff", 
     "type": "SP.UserProfiles.PersonProperties" 
    }, 
    "AccountName": "domain\\KenS", 
    "DisplayName": "Ken Sanchez", 
    "Email": "[email protected]", 
    "Title": "Research Assistant", 
    "UserProfileProperties": { 
     "results": [ 
      { 
       "__metadata": { 
        "type": "SP.KeyValue" 
       }, 
       "Key": "UserProfile_GUID", 
       "Value": "1c419284-604e-41a8-906f-ac34fd4068ab", 
       "ValueType": "Edm.String" 
      }, 
      { 
       "__metadata": { 
        "type": "SP.KeyValue" 
       }, 
       "Key": "SID", 
       "Value": "S-1-5-21-2740942301-4273591597-3258045437-1132", 
       "ValueType": "Edm.String" 
      }, 
      { 
       "__metadata": { 
        "type": "SP.KeyValue" 
       }, 
       "Key": "ADGuid", 
       "Value": "", 
       "ValueType": "Edm.String" 
      }, 
      { 
       "__metadata": { 
        "type": "SP.KeyValue" 
       }, 
       "Key": "AccountName", 
       "Value": "domain\\KenS", 
       "ValueType": "Edm.String" 
      }... 

Можно ли изменить запрос REST с $ фильтром, который только возвращает значений ключа из сбор результатов, где Key = SID OR Key = другие значения?

Мне нужно всего лишь 3 значения из коллекции результатов по названию.

+0

Вы можете поделиться своим первоначальным запросом (URI)? Это поможет придумать ответ. –

+0

Обновлено по URL –

ответ

0

В OData вы не можете фильтровать внутреннюю подачу.

Вместо этого вы можете попытаться запросить набор объектов, из которого создается UserProfileProperties, и развернуть связанный объект SP.UserProfiles.PersonProperties.

Синтаксис нужно будет скорректировать для вашего сценария, но я думаю, что-то вдоль этих линий:

service.svc/UserProfileProperties?$filter=Key eq 'SID' and RelatedPersonProperties/AccountName eq 'domain\kens'&$expand=RelatedPersonProperties 

Это предполагает, что у вас есть набор сущностей верхнего уровня UserProfileProperties и каждая связана обратно один объект SP.UserProfiles.PersonProperties через свойство навигации, называемое (в моем примере) RelatedPersonProperties.

Смежные вопросы