String compare (default compare) is not always transitive; if the string has multiple symbols (e.g. hyphens) it can start looping in the compare - i.e. a > b > c > a.
Ordinal compare is fine, but is not the default.
Affects 1.1 and 2.0
IMPORTANT: Note that this demonstrably breaks Sort() using the default comparer. There is also an example of this breaking SortedList such that it cannot find items that *are there*. It could also break any user code that does a sort / compare for any reason (grouping, uniqueness, etc).
[originally reported by William Hooper on microsoft.public.dotnet.languages.csharp]
[MG edit: tidied steps / results]