2010-04-20 18 views
5

क्वेरी करने के लिए LINQ का उपयोग करें मैं नए Netflix OData feed (http://odata.netflix.com/Catalog/) के साथ खेल रहा हूं और कुछ समस्याएं हैं। मैं एक ही समय में LINQ सीखने की कोशिश कर रहा हूं लेकिन मुझे जो कुछ भी लगता था वह करने में कठिनाई हो रही थी।नेस्टेड ओडाटा संग्रह

मैं किसी दिए गए शैली से मेल खाने वाले टाइटल की एक सूची वापस करना चाहता हूं। टाइटल ऑब्जेक्ट में जेनर्स का संग्रह होता है। मुझे यकीन नहीं है कि इस प्रश्न को कैसे लिखना है। नीचे मेरा प्रयास LINQPad का उपयोग करके काम नहीं करता है।

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

उत्तर

1

आप संदेश के साथ एक DataServiceQueryException प्राप्त कर रहे हैं: अनुरोध संस्करण '1.0' प्रतिक्रिया के लिए बहुत कम है। सबसे कम समर्थित संस्करण '2.0' है।

आप Framework 4 .NET और 4.0

+0

मैं LINQPad v4.13.4 का उपयोग कर रहा हूं जो मुझे लगता है कि .NET 4 संस्करण है। –

0

केली .नेट फ्रेमवर्क के लिए डाउनलोड करने के लिए LINQPad नेट के संस्करण का नवीनीकरण करने की जरूरत है, यह आपको सभी फिल्मों की एक सूची शैली

द्वारा
(from g in Genres.Expand("Titles") 
where g.Name == "Horror" 
select g).Dump(); 

मिल जाएगा यह

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

इसके दिलचस्प LINQPad में निम्न URL बनाता है कि मैं .Expand एसवाई का उपयोग करने के लिए आवश्यक इसे प्राप्त करने के लिए ntax। जब मैं Netflix के लिए ब्राउज़ Odata अपने ब्राउज़र के साथ खाते हैं और एक ही डेटा चाहते हैं मैं यह निम्न URL के साथ प्राप्त कर सकते हैं: http://netflix.cloudapp.net/Catalog/Genres ('हॉरर')/टाइटल

वहाँ .Expand

बिना इसे पाने के लिए एक तरीका होना चाहिए
+0

आपने काइल के बजाए क्यूके लिखा था –

7

मैं प्राप्त करने में सक्षम था मेरे परिणाम LINQ का उपयोग कर:

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

इस तरह से मैं विस्तार का उपयोग करने की जरूरत नहीं है। मैं एक ही परिणाम प्राप्त करने के लिए यूआरएल: http://odata.netflix.com/Catalog/Genres('Horror')/Titles() का भी उपयोग कर सकता हूं। क्रिस वुड्रफ ने यह post मुझे इस मुद्दे को समझने में मदद की।

संबंधित मुद्दे