Trier le tableau de chaînes par longueur d’élément

Ayant un tableau de chaînes, comment puis-je le mettre à jour afin que ses éléments soient sortingés par leur longueur

j’essayais

ssortingng[] arr = {"aa","ss","a","abc"}; arr = arr.OrderBy(aux => aux.Length); 

Donc, je voudrais obtenir a,aa,ss,abc , mais il est dit

ne peut pas implicitement convertir le type ‘system.linq.iorderedenumerable en ssortingng []’

Alors je faisais

 foreach (ssortingng s in arr.OrderBy(str => str.Length)) { // } 

Y a-t-il une autre façon de faire cela?

Puisque arr est un tableau, vous pouvez utiliser la méthode pratique Array.Sort :

 Array.Sort(arr, (x, y) => x.Length.CompareTo(y.Length)); foreach (ssortingng s in arr) { ... } 

Ceci est plus efficace que OrderBy car il va sortinger les éléments du tableau en place plutôt que de créer une nouvelle collection à énumérer.

OrderBy renvoie IEnumerable , pas un tableau. Utilisez la méthode ToArray pour obtenir un tableau:

 arr = arr.OrderBy(aux => aux.Length).ToArray(); 

Cependant, il ne sortingera pas le tableau source. Au lieu de cela, il en créera un nouveau avec les éléments sortingés et remplacera la référence. Si vous avez besoin d’un sorting sur place (par exemple, lorsque le tableau est également référencé ailleurs), utilisez la méthode Array.Sort :

 Array.Sort(x, (x1, x2) => x1.Length.CompareTo(x2.Length)); 

Vous pouvez également le faire en utilisant Linq comme ci-dessous:

 var sortedElements = from arrElement in arr.Distinct() orderby arrElement.Length select arrElement; foreach (ssortingng element in sortedElements) { ... }