The best option would be to wrap your own Tuple class, sort of like the one shipping in .NET 4.0.
Then you could have a single:
List<Tuple<string,string,string>>
This is easy enough to write in .NET 2.0 - it's basically just a triplet of values, instead of having 2 in a KeyValuePair. There is no built-in equivelent for a triplet of values in .NET 2.0, though.
Edit:
After reading your comment about querying in another post, I thought I'd mention this as well -
Even if you don't have unique values in key1, you could dramatically speed up any type of query/search by using:
Dictionary<string, List<KeyValuePair<string,string>>>
Then, instead of storing a single KeyValuePair, you could look up the list of them via the key in the first element. This would be much, much faster if you needed to find all of the elements with a given first key...