4

Atom または RSS フィードを返す ASP.NET Web API アプリケーションを構築しています。これを行うために、それは を構築しSystem.ServiceModel.Syndication.SyndicationFeed、カスタムMediaTypeFormatterは HTTP Accept ヘッダーを処理し、SyndicationFeedAtom10FeedFormatterまたはに変換しRss20FeedFormatter、結果を応答ストリームにストリーミングします。ここまでは順調ですね。

私のコントローラーは次のようになります。

    public class FeedController : ApiController
    {
        public HttpResponseMessage Get()
        {
            FeedRepository feedRepository = new FeedRepository();
            HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed());
            successResponseMessage を返します。
        }
    }

私がやりたいことは、組み込みの OData クエリを使用してフィードをフィルター処理することですが、 aが実装されていないため、Get()メソッドの戻り値の型を に変更してもIQueryable<SyndicationFeed>明らかに機能しません。SyndicationFeedIQueryable

IEnumerable<SyndicationItem>のプロパティで組み込みの OData クエリを使用する方法はありますSyndicationFeedか?

4

3 に答える 3

3

Microsoft は、Web API のベータ ビルドにあった OData クエリの基本的なサポートを削除したため、この質問は関連性がなくなりました。

将来のバージョンには、より完全な OData サポートが含まれる予定です。CodePlex および NuGet を介して利用可能な初期ビルドがあり、詳細については、http: //blogs.msdn.com/b/alexj/archive/2012/08/15/odata-support-in-asp-netを参照してください。 -web-api.aspx

于 2012-08-16T19:48:01.927 に答える
2

System.Linq 名前空間は、AsQueryableという名前の拡張メソッドをIEnumerableインターフェイスに提供します。コードは次のようになります。

public class FeedController : ApiController
{
    public IQueryable<SyndicationFeed> Get()
    {
        FeedRepository feedRepository = new FeedRepository();

        //TODO: Make sure your property handles empty/null results:
        return feedRepository.GetSyndicationFeed()
                   .YourEnumerableProperty.AsQueryable();
    }
}
于 2012-05-10T16:24:19.737 に答える