我有一个文本框,我需要输入文件名,但文件名不一定只是部分文件名。
例如
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!");
}
}
答案 0 :(得分:3)
BinarySearch
并不意味着部分搜索,因此这是您的第一个问题。它试图使用二进制搜索算法匹配一个确切的术语。
如果您的列表框包含所有类型String
的项目,您可以尝试使用此选项:
fValue = bList.Cast<String>()
.FirstOrDefault(t =>
t.StartsWith(sValue, StringComparison.OrdinalIgnoreCase));
这将获得IEnumerable
类型String
,然后找到以sValue
中的值开头的第一个项目。
var matchingItems = lstbxResults.Items
.Cast<ListItem>()
.Where(t => t.Text.StartsWith(sValue));