Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net MVC4 RC Web Api Odata筛选器不适用于IQueryable_C#_.net_Asp.net Web Api - Fatal编程技术网

C# ASP.Net MVC4 RC Web Api Odata筛选器不适用于IQueryable

C# ASP.Net MVC4 RC Web Api Odata筛选器不适用于IQueryable,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,在ASP.net MVC4 RC的Web api中,我像以前一样定义了一个Get操作: public IQueryable<Person> Get() { var lst = ctx.GetListFromDB(); return lst.AsQueryable(); } public IQueryable Get() { var lst=ctx.GetListFromDB(); 返回lst.AsQueryable(); } 如果我

在ASP.net MVC4 RC的Web api中,我像以前一样定义了一个Get操作:

public IQueryable<Person> Get()
    {
        var lst = ctx.GetListFromDB();
        return lst.AsQueryable();
    }
public IQueryable Get()
{
var lst=ctx.GetListFromDB();
返回lst.AsQueryable();
}
如果我调用一个url,比如:
/api/people?$inlinecount=allpages&$format=json&$top=50&$filter=(State+eq+'AL'和+Zip+eq+'35242')


它将对对象进行过滤,自beta版以来是否发生了一些改变,从而打破了这一点?

您必须在方法上添加[Queryable]属性以允许过滤。描述更改的发行说明

更新: 在RTM中,它们似乎已将此功能分离为自己的程序集,因此您必须包含对来自Microsoft的ASP.NET Web API OData程序集的引用。您可以在Nuget上找到最新版本

更新: 在最新版本中,Queryable属性已重命名为EnableQuery。
有关更改的更多信息,请参见

,显然,此功能已从最终发布计划中删除。我想这意味着我们现在需要修改现有的WebAPI操作方法,以包括必要的过滤、排序和分页参数。真的很难过

…请不要因为我是坏消息的传递者而否决我;)

据我所见(2012年9月20日),你需要Nuget软件包才能让它发挥作用。不幸的是,它仍处于预发布阶段。 [Queryable]属性在此包中


我还没有找到很好的相关信息。

我在这里找到了解决方案,请查看常见问题解答()。回答你自己的问题是可以的,甚至是被鼓励的。这样做你甚至可能会得到一些分数。你真的应该进去把@MartinF的答案改成正确的答案。:)“我们计划提供更好的OData支持,作为基于OData库的独立功能。”听起来他们对当前的实现不满意。请参阅其他评论。只需添加[Queryable]属性,就可以开始了。我刚刚尝试了,但无法安装此软件包,NuGet PS client声称缺少此软件包,但它仍然可以在NuGet网站上看到。您是否确保选择了“Include Prerelease”选项?对我有效,请安装软件包Microsoft.AspNet.WebApi.OData-版本4.0.305060此版本[Queryable]现在已经过时,我改用了[System.Web.Http.OData.EnableQuery]。