Если вы обращаетесь к значениям по ключу, используйте словарь, для чего и предназначен. Чтобы уменьшить накладные расходы на словари, попробуйте дать им начальную емкость.
В качестве альтернативы (если оба списка довольно малы), вы можете реализовать собственный объект хеширования, что-то вроде этого (кроме более симпатичного):
public class MyDictionary
{
private Dictionary<string, string> values;
public MyDictionary()
{
values = new Dictionary<string, string>();
}
public void Add(int index, string key, string value)
{
int hash = ((0xFFFF) & index) * (0xFFFF) + (0xFFFF) & key.GetHashCode();
values.Add(hash, value);
}
public string Get(int index, string key)
{
int hash = ((0xFFFF) & index) * (0xFFFF) + (0xFFFF) & key.GetHashCode();
return values[hash];
}
}