如何优化此代码以创建文档库

本文关键字:代码 创建 文档 何优化 优化 | 更新日期: 2023-09-27 18:28:23

这是sharepoint代码,但我知道c#开发人员会理解它。

我现在想不出优化它的方法。其想法是在创建事件的基础上创建一个文档库,文档库的名称是某种格式的开始日期+事件标题。

问题是,当用户在同一天用相同的标题制作许多事件时。我用IF做了这件事,只出现了一次重复。但应该有另一种更好的方法。

这个想法是在文档库/1/2/3等的末尾连接一个数字。

using (SPSite oSPSite = new SPSite(SiteUrl))
            {
                using (SPWeb oSPWeb = oSPSite.RootWeb)
                {
                    if (oSPWeb.Lists[DocumentLibraryName] == null)
                    {
                        Guid ID = oSPWeb.Lists.Add(DocumentLibraryName, DocumentLibraryName + System.DateTime.Now.ToString(), SPListTemplateType.DocumentLibrary);
                        SPList oSPList = oSPWeb.Lists[ID];
                        DocumentLibraryLink = oSPList.DefaultViewUrl;
                        oSPList.OnQuickLaunch = false;
                        oSPList.Update();
                    }
                    else
                    {
                        if (oSPWeb.Lists[DocumentLibraryName + "/1"] == null)
                        {
                            Guid ID = oSPWeb.Lists.Add(DocumentLibraryName + "/1", DocumentLibraryName + System.DateTime.Now.ToString(), SPListTemplateType.DocumentLibrary);
                            SPList oSPList = oSPWeb.Lists[ID];
                            DocumentLibraryName = DocumentLibraryName + "/1";
                            DocumentLibraryLink = oSPList.DefaultViewUrl;
                            oSPList.OnQuickLaunch = false;
                            oSPList.Update();
                        }
                    }
                }
            }
        }

如何优化此代码以创建文档库

在伪代码中:

string docLibNameBase ="myLibname";
string docLibNameTemp = docLibNameBase; //we start with the calculated title
int iCounter = 1;
//we check if the currently calculated title is OK
while (listExists(docLibNameTemp, yourWeb)) {
    docLibNameTemp = docLibNameBase + "/" + iCounter.toString();
}
//this is where you create the new list using docLibNameTemp as a good title

bool listExists(string docLibName, SPWeb web){
   try {
      //if there is no list with such name, it will throw an exception
      return (web.Lists[docLibname]!=null);
   } catch{
        return false;
   }
}