什么是最好的循环使用
本文关键字:循环 什么 | 更新日期: 2023-09-27 18:16:27
我正在制作一个与我们的EDRMS软件集成的Microsoft Word插件。
在这个插件上,有一个按钮可以创建一个新的Word文档并将其保存到EDRMS中。
但是,此按钮也可以在打开现有文档时使用。
我希望能够添加某种类型的验证,以便如果用户单击现有文档上的"新建"按钮,将出现一个消息框,说明该文档已经存在。
我一直在使用foreach循环,它工作得不太好,因为它在第一个结果处停止。
我能使用的最好的循环是什么,它将首先遍历所有结果,然后确定文档是否存在,或者是否可以创建一个新文档。
我的代码如下:
private void btnNewDoc_Click(object sender, EventArgs e)
{
try
{
string docName = Globals.ThisAddIn.Application.ActiveDocument.Name;
string res = Path.GetFileNameWithoutExtension(docName);
string fileloc = Path.GetFullPath(docName);
//searches through all existing documents that are checked out to me
TrimMainObjectSearch recser = new TrimMainObjectSearch(db, BaseObjectTypes.Record);
recser.SetSearchString("checkedOutBy:me");
foreach (Record resultRecord in recser)
{
//if the document doesnt appear in the checked out results, then create the new document
if (res != resultRecord.Title)
{
//code to create the new doc
}
//otherwise display a message
else
{
MessageBox.Show("This is an existing document - " + resultRecord.Number.ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
在你的循环
foreach (Record resultRecord in recser)
{
//if the document doesnt appear in the checked out results, then create the new document
if (res != resultRecord.Title)
{
//code to create the new doc
}
//otherwise display a message
else
{
MessageBox.Show("This is an existing document - " + resultRecord.Number.ToString());
}
}
如果第一个结果与res
不相同,则创建一个新文档。这不是你想要的行为。由于没有显示代码细节,因此不清楚您是否在此时跳出了循环。
bool foundExistingTitle = false;
foreach (Record resultRecord in recser)
{
//if the document doesnt appear in the checked out results, then create the new document
if (res == resultRecord.Title)
{
foundExistingTitle = true;
break;
}
}
if (foundExistingTitle)
{
MessageBox.Show("This is an existing document - " + resultRecord.Number.ToString());
}
}
如果你想使用Linq,你可以大大简化代码。
bool foundExistingTitle = resultRecord.Where(r => r.Title == res).Any();