में IQueryable के अलावा ओडाटा क्वेरी और प्रकार अन्य मैं एक एएसपी.NET वेब एपीआई एप्लिकेशन बना रहा हूं जो एटम या आरएसएस फ़ीड देता है। ऐसा करने के लिए, यह System.ServiceModel.Syndication.SyndicationFeed
बनाता है और एक कस्टम MediaTypeFormatter
HTTP स्वीकृति शीर्षलेख को संभालने के लिए ज़िम्मेदार है, SyndicationFeed
को Atom10FeedFormatter
या Rss20FeedFormatter
में कनवर्ट करना और प्रतिक्रिया स्ट्रीम में परिणाम स्ट्रीम करना। अब तक सब ठीक है.ASP.NET वेब एपीआई
मेरे नियंत्रक इस तरह दिखता है:
public class FeedController : ApiController { public HttpResponseMessage Get() { FeedRepository feedRepository = new FeedRepository(); HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed()); return successResponseMessage; } }
मुझे क्या करना चाहते हैं का उपयोग करना है निर्मित OData मेरे फ़ीड फिल्टर करने के लिए क्वेरी करने के लिए, लेकिन IQueryable<SyndicationFeed>
को Get()
विधि की वापसी प्रकार बदलने स्पष्ट रूप से काम नहीं करेगा क्योंकि SyndicationFeed
IQueryable
लागू नहीं करता है।
SyndicationFeed
पर IEnumerable<SyndicationItem>
संपत्ति पर निर्मित ओडाटा क्वेरीिंग का उपयोग करने का कोई तरीका है?
सुझाव के लिए धन्यवाद, लेकिन यह काम नहीं करेगा क्योंकि वापसी प्रकार गलत है: चेक "लागू क्वेरी विकल्प सीधे" https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
अपने मामले कहीं भी होगी के लिए कम से अनुभाग की तरह दिखता है। आपके उदाहरण में, यह एक IQueryable <सिंडिकेशन फीड> की अपेक्षा कर रहा है लेकिन आप एक आईनेमरेबल <सिंडिकेशन इटिम> लौट रहे होंगे। सिंडिकेशनफिड IQueryable को लागू नहीं करता है लेकिन मैं इसे छोड़ नहीं सकता क्योंकि यह मेरे आरएसएस या एटम फ़ीड के लिए लिफाफा है। सवाल यह है कि, मैं अभी भी अपने रिटर्न प्रकार के रूप में सिंडिकेशनफिड को रखते हुए INumerable को फ़िल्टर करने के लिए ओडाटा क्वेरी कैसे प्राप्त करूं? –
'रिटर्न सिंडिकेशन इटम्स। एक्साक्टेबल(); ' –