Cpt*_*rkt 1 c# sorting coding-style list
获得了"ClientContacts"列表---其中包含一个LastName(在人类的情况下)或一个EntityName(在通用联系的情况下,例如techsupport@mycompany.com).
我想要做的是按LastName按字母顺序排序此列表,如果不存在LastName(换句话说,存在EntityName),则将该EntityName视为LastName,并继续排序,就像它是LastName一样.
所以期望的结果如下:
这会导致崩溃,因为它遇到了一些没有LastName的ClientContacts.
clientContactList.Sort(
delegate(ClientContact c1, ClientContact c2)
{ return c1.LastName.CompareTo(c2.LastName); });
Run Code Online (Sandbox Code Playgroud)
以下允许我通过而不崩溃,它通过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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
导致:
如何将列表排序为上面所需的结果?
请尝试使用此比较:
(c1.LastName ?? c1.EntityName).CompareTo(c2.LastName ?? c2.EntityName)
Run Code Online (Sandbox Code Playgroud)