2
我們有一個SharePoint查詢可能運行在500個文檔的庫上,以撤回標記爲活動(Active列中的active = true)的已發佈文檔的最高版本。SharePoint庫查詢運行速度很慢
這段時間過長(約3-5秒),令用戶感到沮喪。
什麼可以做下面的查詢加快它(我希望這是幾乎瞬間!)
using (var site = new SPSite(Helpers.ConfigurationFile.SharePointUrl().ToString()))
{
using (var web = site.RootWeb)
{
return
web.Folders["Templates"].Files.OfType<SPFile>()
.Where(file => file.Item.HasPublishedVersion)
.Where(file => file.Item.Properties["Active"].ToString() == "true")
.Where(file => file.Item.Versions.OfType<SPListItemVersion>()
.Any(x => x.Level == SPFileLevel.Published))
.Select(file => new LibraryItem(
file.Item.UniqueId,
file.Item.ID,
file.Item.Title,
Helpers.ConfigurationFile.SharePointUrl()
.ToString().AddPathSegment(file.Url),
true,
float.Parse(file.MajorVersion.ToString()
+ "." + file.MinorVersion.ToString())
)
)
.ToList();
}
}
在關閉部分查詢之後,它是引用放慢查詢的文件版本的行(LINQ變爲每個已發佈文檔的單獨查詢)。我不認爲我可以訪問CAML中的文件版本,所以我認爲我最好的選擇是重寫代碼以檢索已發佈的文檔,然後在用戶選擇文檔後獲取特定的版本信息。感謝回覆! – 2012-03-23 16:19:59