C#中的字符串排序

Jam*_*mes 1 c# linq sorting string

我有一个像下面这样的字符串数组:

"access"
"Addition"
"account"
"base"
"Brick"
"zammer"
"Zilon"
Run Code Online (Sandbox Code Playgroud)

我希望他们按照以下规则对它们进行排序"

  1. 首先应该是给定角色的大写字母.
  2. 首都和小写字母应按其各自的组排序.

因此,输出应该是:

"Addition"
"access"
"account"
"Brick"
"base"
"Zilon"
"zammer"
Run Code Online (Sandbox Code Playgroud)

我使用的语言是C#和.Net 4.0.

Mar*_*zek 7

适当的一组OrderBy/ ThenBy调用将起到作用.

  1. 以小写的第一个字母排序,首先获得所有as和As,然后输入bs和Bs等.
  2. 然后IsLower(firstCharacter),将首先获得每个字母的大写项目.
  3. 然后是整个字符串.
var sorted = source.OrderBy(s => char.ToLower(s[0]))
                   .ThenBy(s => char.IsLower(s[0]))
                   .ThenBy(s => s)
                   .ToList();
Run Code Online (Sandbox Code Playgroud)