2010-04-20 32 views
5

Tôi đang phát xung quanh với Netflix OData feed (http://odata.netflix.com/Catalog/) mới và có một số vấn đề. Tôi đang cố gắng tìm hiểu LINQ cùng một lúc nhưng gặp khó khăn khi làm những gì tôi nghĩ sẽ khá đơn giản.Sử dụng LINQ để truy vấn bộ sưu tập OData lồng nhau

Tôi muốn trả lại danh sách các tựa đề khớp với một thể loại nhất định. Đối tượng Nhan đề chứa một bộ sưu tập các thể loại. Tôi không chắc cách viết truy vấn này. Nỗ lực của tôi bên dưới dường như không hoạt động khi sử dụng LINQPad.

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

Trả lời

1

Nếu bạn nhận được DataServiceQueryException cùng với thông báo: Yêu cầu phiên bản '1.0' quá thấp cho phản hồi. Phiên bản được hỗ trợ thấp nhất là '2.0'.

Bạn cần phải nâng cấp phiên bản của Net để NET Framework 4 và tải LINQPad cho .NET Framework 4.0

+0

Tôi đang sử dụng LINQPad v4.13.4 mà tôi tin là phiên bản .net 4. –

0

Kyle, Điều này sẽ giúp bạn có được một danh sách của tất cả các bộ phim của Thể loại

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

Điều này tạo URL sau trong LinqPad

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

Điều thú vị là tôi cần sử dụng .Expand sy ntax để có được nó. Khi tôi duyệt đến Netflix OData nuôi với trình duyệt của tôi và muốn cùng một dữ liệu tôi có thể lấy nó với URL sau: http://netflix.cloudapp.net/Catalog/Genres ('Horror')/Titles

Phải có một cách để có được nó mà không .Expand

+0

Bạn đã viết Kyke, thay vì Kyle –

7

tôi đã có thể để có được kết quả của tôi bằng cách sử dụng LINQ:

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

bằng cách này tôi không cần phải sử dụng Mở rộng. Tôi cũng có thể sử dụng URL: http://odata.netflix.com/Catalog/Genres('Horror')/Titles() để nhận được kết quả tương tự. Điều này post bởi Chris Woodruff đã giúp tôi hiểu được vấn đề.