获得了“ClientContacts”列表——其中有一个 LastName(如果是人类)或一个 EntityName(如果是通用联系人,例如 techsupport@mycompany.com)。
我想要做的是按姓氏字母顺序排序此列表,并且在不存在姓氏的情况下(换句话说,存在实体名),将该实体名视为姓氏,并继续排序,就好像它是姓氏一样。
这样想要的结果好像:
这会导致崩溃,因为它会遇到一些没有姓氏的 ClientContact。
clientContactList.Sort(
delegate(ClientContact c1, ClientContact c2)
{ return c1.LastName.CompareTo(c2.LastName); });
以下允许我在不崩溃的情况下通过,它按 ClientContact EntityName 的第一个排序,然后是 LastNames:
list.Sort(delegate(ClientContact c1, ClientContact c2) {
try
{
return c1.LastName.CompareTo(c2.LastName);
}
catch
{
try
{
return c1.EntityName.CompareTo(c2.LastName);
}
catch
{
return c1.EntityName.CompareTo(c2.EntityName);
}
}
});
导致:
我怎样才能让我的列表排序看起来像上面想要的结果?
最佳答案
尝试使用此比较:
(c1.LastName ?? c1.EntityName).CompareTo(c2.LastName ?? c2.EntityName)
关于c# - 按两个变量对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038664/