У меня проблема с получением элементов из довольно большого списка. Я могу быстро и легко извлекать элементы из небольшого списка, содержащего более или менее 50 элементов, но когда я пытаюсь извлечь элементы из списка, содержащего более или менее 4600 элементов, процесс sqlsever.exe вызывает скачки на время запроса, но предметы никогда не извлекаются. Если вы настроили параметры регулирования веб-приложений, проблема может быть не в этом. Вот код, который я первоначально использовал для получения элементов. В этом нет ничего особенного.
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[uid.ToString()];
SPListItemCollection itemCollection = list.Items;
foreach (SPListItem i in itemCollection) //This is where the code stops responding
{
//Use list items
}
}
}
После того, как это не сработало, я попробовал несколько других способов извлечь элементы из списка. Вот код:
SPList list = web.Lists[uid.ToString()];
SPQuery query = new SPQuery();
query.Query = "";
query.QueryThrottleMode = SPQueryThrottleOption.Override;
SPListItemCollection itemCollection = list.GetItems(query);
//The code stops here
//I added this part for interest sake, i wanted to if it was the looping that caused the problem
//It seems the when you try to access properties of the item collection that the problem occurs
int itemCount = itemCollection.Count;
foreach (SPListItem i in itemCollection)
{
//Use list items
}
Я тоже пробовал:
SPList list = web.Lists[uid.ToString()];
SPListItemCollectionPosition pos;
DataTable dt = list.GetDataTable(new SPQuery(), SPListGetDataTableOptions.None, out pos); //The code stops responding here
foreach (DataRow i in dt.Rows)
{
//Use data rows
}
Кто-нибудь знает, что может быть причиной этой проблемы?
Заранее спасибо!