Estoy creando una aplicación de API web ASP.NET que devuelve un Atom o una fuente RSS. Para hacer esto, construye un System.ServiceModel.Syndication.SyndicationFeed
y un MediaTypeFormatter
personalizado es responsable de manejar el encabezado HTTP Accept, convirtiendo el SyndicationFeed
en o en Rss20FeedFormatter
, y transmitiendo el resultado al flujo de respuesta. Hasta aquí todo bien.Consultas y tipos de OData que no sean IQueryable en ASP.NET Web API
Mi controlador es como la siguiente:
public class FeedController : ApiController { public HttpResponseMessage Get() { FeedRepository feedRepository = new FeedRepository(); HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed()); return successResponseMessage; } }
Lo que me gustaría hacer es hacer uso de la incorporada en el OData consulta para filtrar mi feed, pero cambiando el tipo de retorno del método Get()
-IQueryable<SyndicationFeed>
obviamente no funcionará ya que SyndicationFeed
no implementa IQueryable
.
¿Hay alguna manera de utilizar la consulta incorporada de OData en la propiedad IEnumerable<SyndicationItem>
en el SyndicationFeed
?
Gracias por la sugerencia, pero que no funciona debido a que el tipo de retorno es erróneo. En su ejemplo, está esperando un IQueryable pero estaría devolviendo un IEnumerable . SyndicationFeed no implementa IQueryable, pero no puedo descartarlo porque es el sobre para mi alimentación RSS o Atom. La pregunta es, ¿cómo obtengo la consulta OData para filtrar el IEnumerable mientras sigo manteniendo el SyndicationFeed como mi tipo de devolución? –
'return syndicationItems.AsQueryable();' –