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

本文关键字:内存 列表 数据 查询 服务 | 更新日期: 2023-09-27 18:00:49

我有一个WCF数据服务,它从日常创建的对象中获取数据,如下所示:

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

问题是对象在列表中,不能用Take或Skip命令查询,它只是返回整个IEnumerable(我认为(

所以当我从安卓客户端调用它时:

consumer.callFunction("GetObjects").top(10).execute();

我得到以下异常:

org.odata4j.exceptions.BadRequestException:查询选项$orderby,$inlinecount、$skip和$top不能应用于请求的资源

我应该如何实现可查询列表?它可能吗?或者我只能对实体框架数据库集使用它?

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

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

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