按字符串c#的第n个字符对列表进行排序

本文关键字:列表 排序 字符 字符串 的第 | 更新日期: 2023-09-27 17:59:16

有没有一种简单的方法可以根据字符串的第4个字符对列表进行排序?我有一份国家名单,上面有代码;"美国"是我列表中的一个字符串,我想忽略全名之前的代码("us")。

按字符串c#的第n个字符对列表进行排序

list.Sort((x, y) => x.Substring(3).CompareTo(y.Substring(3)));

与其他答案不同,这种执行排序的方式不会创建不必要的子字符串。相反,它利用了现有的字符串。Compare(strA,indexA,strB,indexB,length)重载,接受字符串偏移量进行比较。

list.Sort((s1, s2) => string.Compare(s1, 3, s2, 3, int.MaxValue));

还有其他有用的string.Compare重载,它们也接受偏移值,可以用来调整比较行为。(例如:忽略事例等)

应该这样做-List<string>是您的原始列表变量

[List<string>].OrderBy(s => s.Substring(3)).ToList();

这适用于

var l = new List<string>(){"us unites states","uk united kingdom","ca canada"};
foreach (var s in l.OrderBy(s => s.ToLower().Substring(3)).ToList())
    Console.WriteLine(s);

注意ToLower,这样就不会比较大写字母和小写字母(如果两者都有)