web-dev-qa-db-fra.com

Filtre OData $ avec plusieurs prédicats

Si j'ai deux entités dans mon modèle, "People" et "Addresses", et qu'une personne particulière a zéro ou plusieurs adresses, accessibles via une propriété de navigation AddressList, puis-je écrire une requête OData qui répond à la question suivante:

"Quelles personnes ont un nom de famille se terminant par Smith et au moins une adresse?"

Il me semble que je ne peux faire qu'un seul prédicat ici, par ex.

http: // localhost: 55100/DemographicsDataService.svc/People ? $ filter = endswith (LastName, 'Smith')

(Je ne suis pas encore convaincu que je puisse même écrire un filtre $ pour gérer le deuxième prédicat .. dans ce cas, supposons que j'essaie de répondre à la question, "Nom de famille se terminant par smith et prénom commençant par Mary")

33
Ben Vitale

Vous pouvez certainement combiner des prédicats dans le filtre $. Par exemple:

/People?$filter=endswith(LastName,'Smith') and startswith(FirstName,'Mary')

Pour plus de détails sur les opérateurs pris en charge et autres, veuillez consulter cette page: http://www.odata.org/documentation/odata-version-2-0/uri-conventions#FilterSystemQueryOption Actuellement, OData n'a pas un moyen d'exprimer la question "Les personnes qui ont au moins une adresse". En fonction de vos données, il peut être possible de télécharger toutes les personnes remplissant les premiers critères et de déterminer celles qui ont une adresse sur le client.

60
Vitek Karas MSFT