Sto creando un'applicazione API Web ASP.NET che restituisce un Atom o un feed RSS. Per fare ciò, crea un System.ServiceModel.Syndication.SyndicationFeed
e un utente personalizzato MediaTypeFormatter
è responsabile della gestione dell'intestazione HTTP Accept, convertendo lo SyndicationFeed
in uno Atom10FeedFormatter
o uno Rss20FeedFormatter
e lo streaming del risultato nel flusso di risposta. Fin qui tutto bene.Query OData e tipi diversi da IQueryable nell'API Web ASP.NET
mio regolatore di simile a questa:
public class FeedController : ApiController { public HttpResponseMessage Get() { FeedRepository feedRepository = new FeedRepository(); HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed()); return successResponseMessage; } }
Quello che vorrei fare è utilizzare il built-in OData interrogazione per filtrare mio feed, ma cambiando il tipo di ritorno del metodo Get()
-IQueryable<SyndicationFeed>
ovviamente non funzionerà poiché un SyndicationFeed
non implementa IQueryable
.
Esiste un modo per utilizzare l'interrogazione OData integrata nella proprietà IEnumerable<SyndicationItem>
su SyndicationFeed
?
Grazie per il suggerimento, ma che non funziona perché il tipo di ritorno è sbagliato. Nell'esempio, si prevede un IQueryable ma si restituirà un oggetto IEnumerable . SyndicationFeed non implementa IQueryable ma non posso scartarlo perché è la busta per il mio feed RSS o Atom. La domanda è: come ottengo la query OData per filtrare IEnumerable mentre continuo a mantenere SyndicationFeed come tipo di ritorno? –
'return syndicationItems.AsQueryable();' –