Poche ore fa stavo rivedendo una 'vecchia' classe che 'simula' il concetto di map. In pratica e' una sorta di dictionary che permette di avere duplicazioni di chiave. Niente di veramente speciale, di fatto usavo una List di KeyValuePair; si pou' fare di meglio, ma qui l'accorcio :-)

Per estrarre i valori data una chiave, ho usato il buon vecchio foreach che andava a riempire una lista di stringhe. In altre parole qualcosa del tipo

List<string> result = new List<string>();
foreach(KeyValuePair<string, string> parameter in parameters) {
  if(parameter.Key.Equals(param))
    result.Add(parameter.Value);
}
return result.ToArray();

Dato che il progetto e' migrato a FX 3.5, ho improvvisato una soluzione LINQ:

return parameters.FindAll(kv => kv.Key.Equals(param)).Select(kv => kv.Value).ToArray();

Devo dire che risulta decisamente piu' chiaro e compatto.