关于查询Document Library时使用ListItemCollectionPosition的问题

Klotting 2015-03-04 04:51:50
我在查询Document Library所有Items时用了row limit, 代码如下:
public List<SPListItemCollection> QuerySPListOrSPDocumentLibrary(SPList spList, bool isRecursive, uint rowLimited, SPFolder queryFolder) 
{
List<SPListItemCollection> queryResult;
SPQuery spQuery;
SPListItemCollection resultItem = null;
try
{
queryResult = new List<SPListItemCollection>();
spQuery = new SPQuery();
spQuery.QueryThrottleMode = SPQueryThrottleOption.Override;
if (isRecursive)
{
spQuery.ViewAttributes = "Scope=\"Recursive\"";
}
if (queryFolder != null)
{
spQuery.Folder = queryFolder;
}
spQuery.RowLimit = rowLimited;

do
{
resultItem = spList.GetItems(spQuery);
queryResult.Add(resultItem);
spQuery.ListItemCollectionPosition = resultItem.ListItemCollectionPosition;
} while (spQuery.ListItemCollectionPosition != null);
}
catch (Exception ex)
{
Util.LogIt(-3, "Common.QuerySPListOrSPDocumentLibrary", ex.Message);
throw ex;
}
return queryResult;
}


如果我在查询数据的时候,Document Library里插入或删除item, 会对最后的 List<SPListItemCollection>有影响么?如果有知道的, 请告诉我原因,不要只说有影响或没影响,谢谢~~~
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SPFarmer 2015-03-04
  • 打赏
  • 举报
回复
引用
那新Add的item是在第101页的那个Item吗,GetItems()方法查询的时候有没有默认排序?
这个要看你SPQuery的CAML语句怎么写的,你可以写order by。Getitems()方法的默认排序,我觉得是ID从小到大,就是1,2,3,4,5
SPFarmer 2015-03-04
  • 打赏
  • 举报
回复
引用 2 楼 qqq050001004 的回复:
[quote=引用 1 楼 shrenk 的回复:] 据我所知,使用RowLimit只是为了分页,防止数据量过大的时候,产生性能问题或者查询失败。 如果有100条item符合查询条件,rowlimit是10,在查询的时候增加了一个item,那么查出来的是分了11页的101条item。如果删除了一个item,那么查出来就是分了10页的99条item。 所以应该是影响结果的,影响结果是因为数据变了,不是rowlimit导致变化的。 参考资料:http://sharepoint.stackexchange.com/questions/43020/use-spquery-rowlimit-also-on-large-lists-with-small-query-results
那新Add的item是在第101页的那个Item吗,GetItems()方法查询的时候有没有默认排序?[/quote] 这种情况最好的办法就是试验一次呀,比在这里问快多了。把rowlimit设置成5,建几个column,5分钟就试出来了。 如果不想写代码试,直接用SharePoint View试也可以,在edit view,把每页显示的个数设置小一些,然后建几个item试试。
计算机器 2015-03-04
  • 打赏
  • 举报
回复
引用 2 楼 qqq050001004 的回复:
[quote=引用 1 楼 shrenk 的回复:] 据我所知,使用RowLimit只是为了分页,防止数据量过大的时候,产生性能问题或者查询失败。 如果有100条item符合查询条件,rowlimit是10,在查询的时候增加了一个item,那么查出来的是分了11页的101条item。如果删除了一个item,那么查出来就是分了10页的99条item。 所以应该是影响结果的,影响结果是因为数据变了,不是rowlimit导致变化的。 参考资料:http://sharepoint.stackexchange.com/questions/43020/use-spquery-rowlimit-also-on-large-lists-with-small-query-results
那新Add的item是在第101页的那个Item吗,GetItems()方法查询的时候有没有默认排序?[/quote] 不确定了,默认应该是按照ID排序,或者索引列?可以试一下默认排序啊。
Klotting 2015-03-04
  • 打赏
  • 举报
回复
引用 1 楼 shrenk 的回复:
据我所知,使用RowLimit只是为了分页,防止数据量过大的时候,产生性能问题或者查询失败。 如果有100条item符合查询条件,rowlimit是10,在查询的时候增加了一个item,那么查出来的是分了11页的101条item。如果删除了一个item,那么查出来就是分了10页的99条item。 所以应该是影响结果的,影响结果是因为数据变了,不是rowlimit导致变化的。 参考资料:http://sharepoint.stackexchange.com/questions/43020/use-spquery-rowlimit-also-on-large-lists-with-small-query-results
那新Add的item是在第101页的那个Item吗,GetItems()方法查询的时候有没有默认排序?
计算机器 2015-03-04
  • 打赏
  • 举报
回复
据我所知,使用RowLimit只是为了分页,防止数据量过大的时候,产生性能问题或者查询失败。 如果有100条item符合查询条件,rowlimit是10,在查询的时候增加了一个item,那么查出来的是分了11页的101条item。如果删除了一个item,那么查出来就是分了10页的99条item。 所以应该是影响结果的,影响结果是因为数据变了,不是rowlimit导致变化的。 参考资料:http://sharepoint.stackexchange.com/questions/43020/use-spquery-rowlimit-also-on-large-lists-with-small-query-results

3,242

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧