我有一个对象列表。对象是保险单。好吧,每个保单号码的第一部分都是字母字符,然后都是数字。我需要对列表中保单编号以 CA 开头的所有保单进行排序,然后按字母数字排序。例如,如果我有三个保单,AB10001、CA20001、CA20003,则顺序应首先全部为“CA”,然后按如下所示对其余部分进行排序:在此处输入代码
CA20001
CA20003
AB10001
据我了解常规排序,让我失望的是如何首先获得所有 CA,因为它们不适用于 alpha 顺序。我认为有可能将所有以 CA 为前缀的策略名称拉到一个新列表中,然后按数字排序。然后将剩菜分类到第二个列表中。然后将第二个列表附加到“CA”排序列表(如果有意义)。使用 lambda 一定有一种更简洁的方法。
最佳答案
你可以通过类似的东西来实现这一点。
var list = new List<string> { "AB10001", "CA20003", "CA20001" };
var ordered = list.OrderByDescending(s => s.StartsWith("CA")).ThenBy(s => s);
foreach(var o in ordered) Console.WriteLine(o);
输出
CA20001
CA20003
AB10001
基本上,您首先根据是否以“CA”开头对所有内容进行排序,然后根据实际的字符串值进行排序。您必须使用降序,因为 false
被认为小于 true
。
关于c# - 如何按前两个字符然后按字母顺序对列表中的对象属性进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045090/