如何对C#中的内存列表使用数据服务查询

时间:2014-04-29 12:41:56

标签: c# wcf-data-services

我有一个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使用它?

1 个答案:

答案 0 :(得分:0)

添加属性可以解决此问题:[Queryable]或[EnableQuery]如果您使用的是最近的webApi位

[WebGet]
[Queryable]
public IQueryable<UObject> GetObjects()
{
return list.Where(e=>e.Item>=2).AsQeryable<UObject>();
}