Лучшим вариантом было бы обернуть свой собственный класс Tuple, что-то вроде , поставляемого в .NET 4.0 .
Тогда вы можете иметь один:
List<Tuple<string,string,string>>
Это достаточно просто написать в .NET 2.0 - это просто триплет значений, а не 2 в KeyValuePair. Однако в .NET 2.0 нет встроенного эквивалента для тройки значений.
Edit:
Прочитав ваш комментарий о запросах в другом посте, я подумал, что тоже упомяну об этом -
Даже если у вас нет уникальных значений в key1, вы можете значительно ускорить любой тип запроса / поиска, используя:
Dictionary<string, List<KeyValuePair<string,string>>>
Затем, вместо того, чтобы хранить одну KeyValuePair, вы можете просмотреть их список по ключу в первом элементе. Это было бы намного быстрее, если бы вам нужно было найти все элементы с указанным первым ключом ...