我有一个包含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指令
即使它是基础知识,我也不明白:/
答案 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
的第一个文件。