问题
Please consider this List:
"A", "C", "AB", "AD", "N", "Z", "AC"
I want to sort this string (That are being Excel column) like Excel Column Sorting.
I want the result like this:
"A", "C", "N", "Z", "AB", "AC", "AD"
Is it possible using LINQ OrderBy?
What is the best approach?
Thanks
回答1:
Update: Thanks @JeppeStigNielsen for correct comment, I add StringComparer.Ordinal
to support in all cultures:
var result = List.OrderBy(p=>p.Length).ThenBy(p=>p,StringComparer.Ordinal);
回答2:
First order by the length of column name ("C" comes before "AB"), then use normal alphabetical (string) sorting on strings with same length ("AC" before "AD").
var columns = new[] { "A", "C", "AB", "AD", "N", "Z", "AC" };
var sorted = columns.OrderBy(c => c.Length)
.ThenBy(c => c);
来源:https://stackoverflow.com/questions/34488997/sort-liststring-like-excel-columns-sort