Класс AutoCompleteStringCollection не запечатан, поэтому вы, безусловно, можете извлечь его и создать перегрузку Add, которая принимает два параметра: ключ и значение.
Тогда вы можете отслеживать это в словаре. Вам придется хранить строку дважды (один раз в коллекции базового класса и один раз в словаре), но затем вы можете добавить метод поиска следующим образом:
class KeyedAutoCompleteStringCollection : AutoCompleteStringCollection {
private readonly Dictionary<string,string> keyedValues =
new Dictionary<string,string>(StringComparer.OrdinalIgnoreCase);
public void Add(string value, string key) {
base.Add(value);
keyedValues.Add(value, key); // intentionally backwards
}
public string Lookup(string value) {
string key;
if (keyedValues.TryGetValue(value, out key)) {
return key;
}
else {
return null;
}
}
}