什么是最好的循环使用

本文关键字:循环 什么 | 更新日期: 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();