web-dev-qa-db-fra.com

Tri du tableau de chaînes en C #

Cela semble peut-être bizarre, mais après une longue programmation, je viens de passer au tri. Tout s'est passé comme prévu, jusqu'à ce que j'essaye de trier un tableau de chaînes contenant deux chaînes identiques. Voyons voir:

Supposons avoir ce qui suit:

string[] testArray = new string[]
    {
        "aa",
        "ab",
        "ac",
        "ad",
        "ab",
        "af"
    };

Array.Sort(testArray, StringComparer.InvariantCulture);

Dans cette situation, je reçois un tableau de valeurs null. J'ai compris que ce comportement est dû au fait que les valeurs à l'intérieur du tableau ne sont pas des valeurs distinctes. Y a-t-il une meilleure explication à cela? Comment trier un tableau non distinct?

14
user586254

Cet extrait de code fonctionne correctement enter image description here

42
Stecya

Si vous avez des problèmes avec les nombres (disons 1, 2, 10, 12 qui seront triés 1, 10, 12, 2), vous pouvez utiliser LINQ :

var arr = arr.OrderBy(x=>x).ToArray();
4
Zebi

En fait, je ne vois pas de nulls:

donné:

static void Main()
        {
            string[] testArray = new string[]
            {
                "aa",
                "ab",
                "ac",
                "ad",
                "ab",
                "af"
            };

            Array.Sort(testArray, StringComparer.InvariantCulture);

            Array.ForEach(testArray, x => Console.WriteLine(x));
        }

J'ai obtenu:

enter image description here

0
lukaszk