C#按字母顺序排序 a - z 然后到 aa, ab - zz

LuD*_*Gon 6 c# linq

我正在 LINQ 中寻找解决方案,但任何事情都有帮助(C#)。

我尝试使用Sort()但它不起作用例如我有一个包含

{"a", "b", "f", "aa", "z", "ac", "ba"}
Run Code Online (Sandbox Code Playgroud)

我得到的回应是:

a, aa, ac, b, ba,  f, z 
Run Code Online (Sandbox Code Playgroud)

我想要的是:

a, b, f, z, aa, ac, ba. 
Run Code Online (Sandbox Code Playgroud)

关于此方法的良好单元测试的任何想法?只是为了文本它正在以这种方式排序。

Sac*_*ach 7

这应该这样做。

var data = new List<string>() { "a", "b", "f", "aa", "z", "ac", "ba" };
var sorted = data.OrderBy(x => x.Length).ThenBy(x => x);
Run Code Online (Sandbox Code Playgroud)

结果:

a、b、f、z、aa、ac、ba


Rio*_*ams 5

如果您希望对现有列表进行实际排序,您可能希望使用OrderBy()一系列方法(例如OrderBy(), OrderByDescending(), ThenBy(), ThenByDescending()):

var orderedList = yourList.OrderBy(x => x.Length)
                          .ThenBy(x => x);
Run Code Online (Sandbox Code Playgroud)

例子

您可以在此处找到一个有效的交互式示例,其输出如下:

a,b,f,z,aa,ac,ba