I'm trying to sort an ArrayList
of String
.
Given:
{A,C,AA,B,CC,BB}
Arraylist.Sort
gives:
{A,AA,B,BB,C,CC}
What I need is:
{A,B,C,AA,BB,CC}
ArrayList list = new ArrayList {"A","C","AA","B","CC","BB"};
var sorted = list.Cast<string>()
.OrderBy(str => str.Length)
.ThenBy(str => str);
//LinqPad specific print call
sorted.Dump();
prints:
A
B
C
AA
BB
CC
It's easier to do this with Linq as so:
string [] list = { "A","C","AA","B","CC","BB"};
var sorted = list.OrderBy(x=>x.Length).ThenBy(x=>x);
Note that the OrderBy
method returns a new list. If you want to modify the original, then you need to re-assign it as so:
list = list.OrderBy(x=>x.Length).ThenBy(x=>x).ToArray();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With