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;
}