0

我有一个文本框,我需要输入文件名,但文件名不必是整个文件名,只是部分文件名。

例如

iexplorere.exe 将存储在列表框中。然后我必须输入woule 是“iexpl”,然后结果将出现在带有完整文件名的消息框中。

我在使用二进制搜索方法时遇到了问题。

到目前为止,我的代码是:

private void btnSearch_Click(object sender, RoutedEventArgs e)
{


        fValue = bList.BinarySearch(sValue, StringComparison.OrdinalIgnoreCase);
        MessageBox.Show("The Following Files were found \n" + fValue);
    }
    catch (Exception)
    {
        // Alerts the user path file doesnt exist
        MessageBox.Show("The File Doesn't Exist!");
    }

}
4

1 回答 1

3

BinarySearch并不意味着部分搜索,所以这是你的第一个问题。它试图使用二进制搜索算法匹配一个确切的术语。

如果您的列表框包含所有类型的项目,String您可以试试这个:

fValue = bList.Cast<String>()
    .FirstOrDefault(t =>
                    t.StartsWith(sValue, StringComparison.OrdinalIgnoreCase));

这将获得一个IEnumerable类型String,然后找到以您在中的值开头的第一个项目sValue

编辑:既然你标记了这个 ASP .NET,你可能会尝试这个班轮。这将获得所有匹配项的集合,而不仅仅是上面的第一个:

var matchingItems = lstbxResults.Items
    .Cast<ListItem>()
    .Where(t => t.Text.StartsWith(sValue));
于 2013-03-08T00:57:50.533 回答