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

时间:2016-07-30 22:19:27

标签: c#

是否有一种简单的方法可以根据字符串的第4个字符对列表进行排序?我有一份在他们面前有代码的国家名单; “我们美国”是我名单中的一个字符串,我想在完整的国家名称之前忽略代码(“我们”)。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

这应该这样做 - 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,因此您不要将大写字母与小写字母进行比较(如果您同时使用这两种字母)