Mono sorts different on different machines

I have a simple sorting issue using mono... If I run the following code on Mac and Windows I get a different result:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var testArray = new string[]
        {
        "PȺFftFyaheâµ", "P6ZijTµȺut"
        }.OrderBy(t => t);

        foreach (var item in testArray)
        {
            Console.WriteLine(item);
        }
    }
}

Result windows

P6ZijTµȺut
PȺFftFyaheâµ

Result Mac

PȺFftFyaheâµ
P6ZijTµȺut

Does anyone has a clue how this is possible and what we can do to fix it?

Thanks the fix was a string comparer

class Program
{
    static void Main(string[] args)
    {
        var testArray = new string[] { "PȺFftFyaheâµ", "P6ZijTµȺut" }.OrderBy(t =>  t, StringComparer.Ordinal);
        foreach (var item in testArray)
        {
            Console.WriteLine(item);
        }
    }
}
Jon Skeet
people
quotationmark

This is to be expected, given differences in culture. From the string.CompareTo(string) documentation:

This method performs a word (case-sensitive and culture-sensitive) comparison using the current culture. For more information about word, string, and ordinal sorts, see System.Globalization.CompareOptions.

To make sure the code behaves the same way on multiple systems, you can either ensure you use the same culture on all systems, or specify a culture-insensitive comparison (e.g. StringComparer.Ordinal) as a second argument to OrderBy.

people

See more on this question at Stackoverflow