如果和其他如果指示

时间:2017-05-29 08:25:44

标签: c# if-statement

我有一个包含doc文件(名字名字)的目录

例如我有这个:

Doe John.doc

Doe Phil.doc

Doe Robert.doc

Poe Dameron.doc

我有一个包含数据库中所有人的列表框,我选择一个名称,然后点击“打开文件”

我的代码:

       string fullname = Name + " " + Firstname; 

       string[] allFiles = Directory.GetFiles((Doc_Path));
       foreach (string file in allFiles)
       {
           if (file.Contains(fullname))
           {
               Process.Start(file);
               return;
           }
       // if it cant found fullname, try to open by Name only
           else if(file.Contains(Name)) 
           {
               Process.Start(file);
               return;
           }
       }

我的问题:

如果我选择Doe Robert,它会在所有情况下打开Doe John,但它应该停在第一个IF指令

即使它是基础知识,我也不明白:/

2 个答案:

答案 0 :(得分:5)

你实际上想要先进行精确匹配然后进行模糊匹配。你必须再次走foreach来检查你的模糊匹配:

foreach (string file in allFiles)
{
    if (file.Contains(fullname))
    {
        Process.Start(file);
        return;
    }
}

foreach (string file in allFiles)
{
    // if it cant found fullname, try to open by Name only
    if(file.Contains(Name)) 
    {
        Process.Start(file);
        return;
    }
}

return导致其余代码未在找到的第一个匹配项上执行。

答案 1 :(得分:1)

您可以使用简单的linq语句:

FirstOrDefault

首先allFiles搜索fullname以查找包含null的文件。如果找不到此类文件,则会返回??allFiles运算符会执行正确的部分,搜索Name以查找包含key的第一个文件。