c#按字母顺序排序列表

本文关键字:排序 列表 顺序 | 更新日期: 2023-09-27 18:18:29

如何按照以下格式按姓氏对用户列表进行排序?

。去年

first.mi.last

mylist.Sort();

按名字排序,这不是我想做的。我是否需要使用RegEx?

c#按字母顺序排序列表

您可以使用Linq来订购您的用户:

using System.Linq;
mylist.OrderBy(x => x.LastName);

如果您有相同的姓氏,您可以按中间名排序用户。如果你有相同的中间名,你可以按名字排序用户:

mylist.OrderBy(x => x.LastName).ThenBy(x => x.MiddleName).ThenBy(x => x.FirstName);

假设你的名字是简单的字符串(而不是具有FirstName和LastName属性的对象),就像这样:

var list = new List<string> { "c.a", "a.c" , "b"};

你可以这样排序:

var orderedList = list.OrderBy(item => item.Split('.').Last());
输出:

c.a 
b 
a.c 

如果要对进行排序,请尝试指定比较器

 mylist.Sort((left, right) => string.Compare(left.LastName, right.LastName));

如果mylist包含string项,则必须提取LastName:

 private static String LastName(string value) {
   if (string.IsNullOrEmpty(value))
     return value;
   int p = value.LastIndexOf('.');
   return value.SubString(p + 1);  
 } 
 ...
 mylist.Sort((left, right) => string.Compare(LastName(left), LastName(right)));