请考虑此清单:
"A", "C", "AB", "AD", "N", "Z", "AC"
我想对此字符串(即Excel列)进行排序,例如Excel列排序。
我想要这样的结果:
"A", "C", "N", "Z", "AB", "AC", "AD"
是否可以使用LINQ OrderBy?
最好的方法是什么?
由于
答案 0 :(得分:11)
更新:感谢@JeppeStigNielsen的正确评论,我在所有文化中添加了StringComparer.Ordinal
来支持:
var result = List.OrderBy(p=>p.Length).ThenBy(p=>p,StringComparer.Ordinal);
答案 1 :(得分:3)
按照列名的长度排序第一个(“C”出现在“AB”之前),然后对长度相同的字符串(“AD”之前的“AC”)使用普通的字母(字符串)排序。
var columns = new[] { "A", "C", "AB", "AD", "N", "Z", "AC" };
var sorted = columns.OrderBy(c => c.Length)
.ThenBy(c => c);