Bir Atom veya RSS beslemesi döndüren bir ASP.NET Web API uygulaması yapıyorum. Bunu yapmak için
System.ServiceModel.Syndication.SyndicationFeed
ve özel bir
MediaTypeFormatter
özel bir
MediaTypeFormatter
,
SyndicationFeed
bir
Atom10FeedFormatter
veya bir
Rss20FeedFormatter
dönüştürmek ve sonuç yanıt akışına akışı için özel bir sorumludur. Çok uzak çok iyi.
Benim denetleyicisi şuna benzer:
public class FeedController : ApiController { public HttpResponseMessage Get() { FeedRepository feedRepository = new FeedRepository(); HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed()); return successResponseMessage; } }
Ne yapmak istiyorum faydalanmak yerleşik OData Feed'imi filtrelemek için sorgulama, ancak IQueryable<SyndicationFeed>
için Get()
yöntemin dönüş türünü değiştirmeyi SyndicationFeed
IQueryable
uygulanmadığı için açıkçası çalışmayacaktır.
SyndicationFeed
'daki IEnumerable<SyndicationItem>
özelliğindeki yerleşik OData sorgulamasını kullanmanın bir yolu var mı?
öneri için teşekkür ama dönüş tipi yanlış olduğu için bu işe yaramaz: o kitabın durum için https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
de Kontrolü "çağırma Sorgu Seçenekleri Doğrudan" bölümü benziyor. Örneğinizde, bir IQueryable bekleniyor, ancak bir IEnumerable döndüreceksin. SyndicationFeed, IQueryable uygulamıyor ancak RSS veya Atom beslemem için zarf olduğu için onu atamam. Soru şu ki, SyndicationFeed'i geri dönüş türüm olarak tutarken IEnumerable 'i filtrelemek için OData sorgusunu nasıl alabilirim? –
'return syndicationItems.AsQueryable();' –