Devi utilizzare l'interfaccia IComparer.

Per utilizzarla però devi anche aggiungere il metodo "CompareTo" alla tua classe:
codice:
public class Soluzione() : IComparable
{
	...
	...

	public int CompareTo(Soluzione s2)
	{
		return this.valore.CompareTo(s2.valore);
	}
}
Il codice per effettuare la comparazione poi è questo:
codice:
class CompareSoluzioneByValue<Soluzione> : IComparer<Soluzione>
{
	public int Comapre(Soluzione x, Soluzione y)
	{
		return x.CompareTo(y);
	}
}
e la chiamate è questa:
codice:
IComparer<Soluzione> myComparer = new CompareSoluzioneByValue<Soluzione>();
myList.Sort(myComparer);

UPDATE:
puoi usare anche una lambda:
codice:
myList.Sort((sol1, sol2) => {return sol1.CompareTo(sol2);});