问题:
我有一个集合列表我需要通过OData参数过滤这个集合($ filter,$ orderby等)我能用什么来做我想做的事情?
产地:
SharePoint REST API具有阈值限制(5000项),当列表中有更多项时,将抛出异常。这就是为什么这不起作用的原因:
HOST/_vti_bin/listdata.svc/MyList?$filter=FieldName eq 'foo'&$orderby=OtherFIeld asc
我们可以获得所有项目,但我们不能使用这样的OData参数:
HOST/_vti_bin/listdata.svc/MyList
作为回应,我们将获得__next属性,我们可以在其中找到我们将用于下一页数据的网址,它将如下所示:
HOST/_vti_bin/listdata.svc/MyList?$skiptoken=4988
这就是我们如何获得所有物品。现在我需要将初始请求中的OData参数应用到我这边的过滤结果中。我不知道该怎么做。
答案 0 :(得分:0)
从answer开始,您可以执行以下操作:
public async Task<Object> GetMyList(ODataQueryOptions<MyObject> options = null)
{
// Get your list from SharePoint
List<MyObject> myObjects = GetMyObjectListFromSharePoint();
// This will apply the OData query parameters
// to your IQueryable object but won't execute the query
IQueryable query = options.ApplyTo(myObjects.AsQuerable());
// This will execute the above query
// and return the new list of MyObject
List<Object> result = await query.ToListAsync();
// Do post result actions
return result;
}