按字母顺序排列列表,不包括字母

时间:2014-11-20 19:23:12

标签: c# linq sorting

我有一个对象列表,每个对象都有一个名字。我正在尝试按字母顺序对列表进行排序(这很容易实现),但后来我希望以字母D开头的任何项目按照按字母顺序排序的列表进行排序。所以给出了这些项目:

(Apple, Door, Banana, Doorknob, Gorilla, Hammer)  

我想将其排序为:

(Apple, Banana, Gorilla, Hammer, Door, Doorknob) 

我确信我可以使用暴力来处理这个问题,但是我希望有一种方法可以使用OrderBy().ThenBy()使用linq来实现它,但看起来更像是在2个不同的属性上进行排序。我试图用linq做什么,或者我只是必须以老式的方式做到这一点?

1 个答案:

答案 0 :(得分:10)

您可以使用任何返回可排序值的表达式作为排序顺序;它不一定是一个财产。将名称以" D"开头的所有对象放入在列表的末尾只使用:

.OrderBy(o => o.Name.StartsWith("D") ? 1 : 0)
.ThenBy(o => o.Name)