我有一个对象列表,每个对象都有一个名称.我正在尝试按字母顺序对列表进行排序(这很容易实现)但后来我希望以字母D开头的任何项目按字母顺序排序列表排序.所以给出的项目:
(Apple, Door, Banana, Doorknob, Gorilla, Hammer)
Run Code Online (Sandbox Code Playgroud)
我想把它归类为:
(Apple, Banana, Gorilla, Hammer, Door, Doorknob)
Run Code Online (Sandbox Code Playgroud)
我确信我可以使用强力来处理这个问题,但我希望有一种方法可以用linq来实现它,OrderBy().ThenBy() 但它看起来更像是在2个不同的属性上进行排序.我试图用linq做什么,或者我只是必须用老式的方式做?
D S*_*ley 10
您可以使用任何返回可排序值的表达式作为排序顺序; 它不一定是财产.要将名称以"D"开头的所有对象放在列表的末尾,只需使用:
.OrderBy(o => o.Name.StartsWith("D") ? 1 : 0)
.ThenBy(o => o.Name)
Run Code Online (Sandbox Code Playgroud)