2010-04-20 8 views
5

Sto giocando con il nuovo Netflix OData feed (http://odata.netflix.com/Catalog/) e con alcuni problemi. Sto cercando di imparare LINQ allo stesso tempo, ma avendo difficoltà a fare quello che pensavo sarebbe stato abbastanza semplice.Utilizzare LINQ per eseguire query su raccolta OData nidificata

Mi piacerebbe restituire un elenco di titoli che corrispondono a un determinato genere. L'oggetto Titoli contiene una raccolta di generi. Non sono sicuro di come scrivere questa query. Il mio tentativo di seguito non sembra funzionare utilizzando LINQPad.

from t in Titles 
where t.Genres.Name.Contains("ABC") 
select t 

risposta

1

Se si riceve una DataServiceQueryException insieme al messaggio: Richiesta versione '1.0' è troppo bassa per la risposta. La versione supportata più bassa è "2.0".

È necessario aggiornare la versione di .Net a .Net Framework 4 e scaricare LINQPad per .NET Framework 4.0

+0

Sto usando LINQPad v4.13.4 che credo sia la versione .net 4. –

0

Kyle, Questo ti porterà un elenco di tutti i film per genere

(from g in Genres.Expand("Titles") 
where g.Name == "Horror" 
select g).Dump(); 

Questo crea il seguente URL nel LINQPad

/Catalog/Genres('Horror')?$expand=Titles 

la sua interessante che avevo bisogno di usare il .Expand sy NTAX per averlo. Quando si naviga al netflix odata nutrire con il mio browser e voglio lo stesso dato che posso ottenere con il seguente URL: http://netflix.cloudapp.net/Catalog/Genres ('Horror')/Titoli

Ci deve essere un modo per arrivare a esso senza .Expand

+0

Hai scritto Kyke, invece di Kyle –

7

sono stato in grado di ottenere i miei risultati utilizzando il LINQ:

from g in Genres 
from t in g.Titles 
where g.Name == "Horror" 
select t 

In questo modo non ho bisogno di usare Expand. Posso anche utilizzare l'URL: http://odata.netflix.com/Catalog/Genres('Horror')/Titles() per ottenere gli stessi risultati. Questo post di Chris Woodruff mi ha aiutato a capire il problema.