排序列表<string>,如Excel列排序

时间:2015-12-28 06:58:49

标签: c# linq sorting c#-4.0

请考虑此清单:

"A", "C", "AB", "AD", "N", "Z", "AC"

我想对此字符串(即Excel列)进行排序,例如Excel列排序。

我想要这样的结果:

"A", "C", "N", "Z", "AB", "AC", "AD"

是否可以使用LINQ OrderBy?

最好的方法是什么?

由于

2 个答案:

答案 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);