加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET Web API中除IQueryable之外的OData查询和类型

发布时间:2020-12-16 07:04:40 所属栏目:asp.Net 来源:网络整理
导读:我正在构建一个返回Atom或RSS提要的ASP.NET Web API应用程序.为此,它构建一个System.ServiceModel.Syndication.SyndicationFeed,并且自定义MediaTypeFormatter负责处理HTTP Accept Header,将SyndicationFeed转换为Atom10FeedFormatter或Rss20FeedFormatter,
我正在构建一个返回Atom或RSS提要的ASP.NET Web API应用程序.为此,它构建一个System.ServiceModel.Syndication.SyndicationFeed,并且自定义MediaTypeFormatter负责处理HTTP Accept Header,将SyndicationFeed转换为Atom10FeedFormatter或Rss20FeedFormatter,并将结果传输到响应流.到现在为止还挺好.

我的控制器看起来像这样:

    public class FeedController : ApiController
    {
        public HttpResponseMessage Get()
        {
            FeedRepository feedRepository = new FeedRepository();
            HttpResponseMessage<SyndicationFeed> successResponseMessage = new HttpResponseMessage<SyndicationFeed>(feedRepository.GetSyndicationFeed());
            return successResponseMessage;
        }
    }

我想要做的是使用内置的OData查询来过滤我的Feed,但是将Get()方法的返回类型更改为IQueryable< SyndicationFeed>显然无法工作,因为SyndicationFeed没有实现IQueryable.

有没有办法在IEnumerable< SyndicationItem>上使用内置的OData查询? SyndicationFeed上的财产?

解决方法

System.Linq命名空间为IEnumerable接口提供名为 AsQueryable 的扩展方法.你的代码看起来像这样:

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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读