我有一个WCF数据服务,它从dinamically创建的对象获取数据,如下所示:
List<UObject> list=new List<UObject>();
for(int i=0;i<20;i++)
{
list.Add(new UObject());
}
对于客户端,它必须是可查询的方法,因此我使用以下代码:
[WebGet]
public IQueryable<UObject> GetObjects()
{
return list.Where(e=>e.Item>=2).AsQeryable<UObject>();
}
问题是对象在List中并且无法使用Take或Skip命令查询,它只返回整个IEnumerable(我假设)。
所以当我从Android客户端调用它时:
consumer.callFunction("GetObjects").top(10).execute();
我得到以下异常:
org.odata4j.exceptions.BadRequestException:查询选项$ orderby, $ inlinecount,$ skip和$ top无法应用于请求的内容 资源。
我应该如何实现可查询列表?是否可以或者我只能对Entity Framework DbSets使用它?
答案 0 :(得分:0)
添加属性可以解决此问题:[Queryable]或[EnableQuery]如果您使用的是最近的webApi位
[WebGet]
[Queryable]
public IQueryable<UObject> GetObjects()
{
return list.Where(e=>e.Item>=2).AsQeryable<UObject>();
}