C# 比较项目的标题,如果它存在,我想添加一个新的文件,例如在结尾处的v2

C# 比较项目的标题,如果它存在,我想添加一个新的文件,例如在结尾处的v2,c#,sharepoint,C#,Sharepoint,我正在检查文件夹中是否存在列表项: SPFolder folder = site.RootWeb.GetFolder(folderUrl); if (folder.ItemCount > 0) { SPQuery query = new SPQuery(); query.Folder = folder;

我正在检查文件夹中是否存在列表项:

 SPFolder folder = site.RootWeb.GetFolder(folderUrl);
                    if (folder.ItemCount > 0)
                    {
                        SPQuery query = new SPQuery();
                        query.Folder = folder;
                        SPListItemCollection listitem = list.GetItems(query); 

                        foreach (SPListItem item in listitem)
                        {
                           if (item.Title.Equals("ItemTitle")) {
                              // Add a new item with Title: ItemTitle_v2
                           }
                        }
                    }

如果项目存在,我首先检查标题是否为例如“ItemTitle”。如果是,我会在末尾添加一个带有“\u v2”的新项目:“ItemTitle\u v2”。但我还想检查是否存在a_v2,3,4,5,6等。我该怎么做

检查下面的代码。我已经把它放在了.NETFIDLE上,这样你就可以执行和验证了。我没有使用SP类,但逻辑在任何情况下都很常见

publicstaticvoidmain()
{
var source=新列表();
添加(新的ListItem{Title=“ItemTitle”});
添加(新列表项{Title=“itemttitle_v2”});
Add(新的ListItem{Title=“ItemTitle_v3”});
添加(新列表项{Title=“OtherTitle”});
var target=新列表();
target.AddRange(source);//不要直接分配source,这将导致错误。
foreach(源中的var项)
{
如果(item.Title==“ItemTitle”)
{
var newTitle=GetItemTitle(目标,“ItemTitle”);
Add(新列表项{Title=newTitle});
}
}
}
私有静态字符串GetItemTitle(IList destList,字符串titleToCheck)
{
春天国际酒店;
//获取最后添加的具有匹配标题的项
var match=destList.Last(s=>s.Title.StartsWith(titleToCheck));
//检查是否有具有版本化标题的项目
if(match.Title.ToLower()包含(“\v”))
{
//获取版本字符串
字符串verStr=match.Title.Split(“”“)[1];
//获取版本号
字符串verNo=verStr.ToLower().Replace(“v”,string.Empty);
if(内锥虫(维诺,外维诺))
{
verNum++;
}
}
其他的
{
弗农=2;
}
返回string.Format(“{0}\u v{1}”,titleToCheck,verNum);
}

使用以下方法解决了此问题:

private string AppendFileNumberIfExists(SPWeb rootWeb, SPFolder folder, string file)
    {
        if (rootWeb.GetFile(file).Exists) 
        {
            string fileName = Path.GetFileNameWithoutExtension(file); // The file name with no extension. 
            int fileVersionNumber = 0;

            do
            {
                var version = "_v";
                fileVersionNumber += 1;
                file = SPUrlUtility.CombineUrl(folder.Url, 
                            string.Format("{0}{1}{2}{3}", 
                                            fileName,
                                            version,
                                            fileVersionNumber,
                                            ".csv" ));       
            }
            while (rootWeb.GetFile(file).Exists); // As long as the file name exists, keep looping. 
        }
        return file;
 }

(灵感来源:)

您尚未尝试任何与实际问题相关的代码!向我们展示您试图匹配并检查文件.item.Title.Equals(“ItemTitle”)存在的逻辑?如果代码找到item ItemTitle_v2,您希望代码做什么?在这种情况下,您希望插入ItemTitle_v3吗?是的,这正是我想要做的。
private string AppendFileNumberIfExists(SPWeb rootWeb, SPFolder folder, string file)
    {
        if (rootWeb.GetFile(file).Exists) 
        {
            string fileName = Path.GetFileNameWithoutExtension(file); // The file name with no extension. 
            int fileVersionNumber = 0;

            do
            {
                var version = "_v";
                fileVersionNumber += 1;
                file = SPUrlUtility.CombineUrl(folder.Url, 
                            string.Format("{0}{1}{2}{3}", 
                                            fileName,
                                            version,
                                            fileVersionNumber,
                                            ".csv" ));       
            }
            while (rootWeb.GetFile(file).Exists); // As long as the file name exists, keep looping. 
        }
        return file;
 }