2010-12-22 34 views
22

Si tengo dos entidades en mi modelo, "Personas" y "Direcciones", y una Persona en particular tiene cero o más direcciones, accedidas a través de una propiedad de navegación AddressList, ¿puedo escribir una consulta OData que responde la siguiente pregunta:

"¿Qué personas tienen un apellido que termina en Smith y al menos una dirección?"

Me parece que aquí solo puedo hacer un predicado, p.

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

(aún no estoy convencido de que puedo incluso escribir un filtro $ para manejar el segundo predicado .. en cuyo caso, asume que soy tratando de responder la pregunta, "Apellido que termina en smith y primer nombre que comienza con Mary")

Respuesta

44

Definitivamente puede combinar predicados en el filtro $. Por ejemplo:

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

Para detalles en torno a los operadores y compatibles, consulte esta página: http://www.odata.org/documentation/odata-version-2-0/uri-conventions#FilterSystemQueryOption Actualmente OData no tiene una forma de expresar la pregunta "¿Las personas que tienen al menos una dirección". Dependiendo de sus datos, podría ser factible descargar todas las personas que cumplan los primeros criterios y determinar aquellas con la dirección en el cliente.

+2

El enlace está roto. – AustinT

+0

@Vitek Karas MSFT: ¿se puede actualizar el enlace? – user2439903

Cuestiones relacionadas