我有一个包含20多万条记录的非常大的列表,但我通过增加视图阈值级别来获取记录。但所有这些都使应用程序非常缓慢,所以我正在寻找从大列表中提取项目的高效且标准的解决方案。
您需要在feches中使用分页,并确保您是否正在筛选以在列中设置正确的索引
看看MSDN上的这篇文章:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.listitemcollectionposition.aspx
这个片段将以10:为一批迭代您的列表
using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb)
{
SPList oList = oWebsiteRoot.Lists["Announcements"];
SPQuery oQuery = new SPQuery();
oQuery.RowLimit = 10; oQuery.Query = "<OrderBy Override="TRUE">" +
"<FieldRef Name="FileLeafRef" /></OrderBy>";
int intIndex = 1;
do
{
Response.Write("<BR>Page: " + intIndex + "<BR>");
SPListItemCollection collListItems = oList.GetItems(oQuery);
foreach(SPListItem oListItem in collListItems)
{
Response.Write(SPEncode.HtmlEncode(oListItem["Title"]) +
"<BR>");
}
oQuery.ListItemCollectionPosition =
collListItems.ListItemCollectionPosition;
intIndex++;
} while(oQuery.ListItemCollectionPosition != null);
}