如何按以下格式按姓氏对用户列表进行排序?按字母顺序排列的C#列表
first.last
first.mi.last
mylist.Sort();
各种各样的名字,那是不是我想做的事情。我是否需要使用RegEx?
如何按以下格式按姓氏对用户列表进行排序?按字母顺序排列的C#列表
first.last
first.mi.last
mylist.Sort();
各种各样的名字,那是不是我想做的事情。我是否需要使用RegEx?
假设你的名字是简单的字符串(和不是名字和姓氏属性的对象)是这样的:
var list = new List<string> { "c.a", "a.c" , "b"};
你可以这样进行订购:
var orderedList = list.OrderBy(item => item.Split('.').Last());
输出:
c.a
b
a.c
您可以使用Linq
订购用户:
using System.Linq;
mylist.OrderBy(x => x.LastName);
如果你有相同的姓氏可以通过中间名订购用户。如果你有相同的中间名,你可以按名字顺序对用户:
mylist.OrderBy(x => x.LastName).ThenBy(x => x.MiddleName).ThenBy(x => x.FirstName);
如果你想在地方排序,尝试specifing的比较器
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)));
是什么在你的名单? –