1

En utilisant le flux OData de Northwind disponible au http://services.odata.org/Northwind/Northwind.svc/, comment procéder pour récupérer une liste d'employés affectés à TerritoryID = 19713?Filtrage des résultats d'odata basés sur une valeur contenue dans une propriété de navigation

Je peux obtenir les employés et les territoires en utilisant la requête LINQ suivante, mais sans les méthodes All/Any, je ne suis pas sûr de savoir comment faire ce que je demande.

from e in Employees.Expand("Territories") select e 

Je suppose est simple et je ne suis pas voir la forêt pour les arbres ... donc, merci d'avance pour votre aide.

+0

L'URL ne fonctionne pas ... le sous-domaine n'existe pas –

+0

Vous pouvez essayer à nouveau ... l'URL fonctionne très bien pour moi. – DarLom

+0

Ne fonctionne toujours pas pour moi, je ne peux pas résoudre le nom d'hôte. C'est bizarre ... –

Répondre

3

Dans ce cas, vous pouvez tourner autour

Territories.Expand("Employees").Where (t => t.TerritoryID == "19713") 

Mais en général, LINQ à OData a un sous-ensemble très restreint d'opérandes. Des méthodes telles que Any ou Contains, qui seraient utiles dans des requêtes similaires, par ex. linq aux entités, ne sont pas supportés.

+1

Ils ont simplement ajouté un support Any/All à OData v3 et WCF Data Services 5. Voir http://msdn.microsoft.com/en-us/library/ee622463 (v = vs.103) .aspx # filtrage. Malheureusement, le Northwind svc est toujours la version 2 donc votre chemin est la seule façon d'y aller, je pense. –

+0

@JasonFreitas Bon à savoir! –

+1

Il existe également un service V3 Northwind. Par exemple: http://services.odata.org/V3/Northwind/Northwind.svc/Categories?$filter=Products/any(p:p/UnitPrice gt 20) –

Questions connexes