Pregunta Use LINQ para consultar la colección OData anidada


Estoy jugando con el nuevo Netflix OData feed (http://odata.netflix.com/Catalog/) y teniendo algunos problemas. Estoy tratando de aprender LINQ al mismo tiempo, pero tengo dificultades para hacer lo que pensé que iba a ser bastante simple.

Me gustaría devolver una lista de títulos que coinciden con un género determinado. El objeto de títulos contiene una colección de géneros. No estoy seguro de cómo escribir esta consulta. Mi intento a continuación no parece funcionar usando LINQPad.

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

5
2018-04-20 23:50


origen


Respuestas:


Pude obtener mis resultados usando el LINQ:

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

De esta manera no necesito usar Expandir. También puedo usar la URL: http://odata.netflix.com/Catalog/Genres ('Horror') / Títulos () para obtener los mismos resultados. Esta enviar por Chris Woodruff me ayudó a entender el problema.


7
2018-04-21 19:57



Si recibe una DataServiceQueryException junto con el mensaje: La versión de solicitud '1.0' es demasiado baja para la respuesta. La versión más baja admitida es '2.0'.

Necesitas actualizar tu versión de .Net a .Net Marco 4 y descargar LINQPad para .NET Framework 4.0


1
2018-04-21 15:15



Kyle, Esto te dará una lista de todas las películas por género.

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

Esto crea la siguiente URL en LinqPad

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

Es interesante que necesitaba usar el .Expand sintaxis para conseguirlo. Cuando busco la información de odata de netflix con mi navegador y quiero la misma información, puedo obtenerla con la siguiente URL: http://netflix.cloudapp.net/Catalog/Genres('Horror') / Títulos

Debe haber una forma de lograrlo sin .Expand


0
2018-04-21 18:40