Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按字母顺序对列表排序,不包括字母_C#_Linq_Sorting - Fatal编程技术网

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

C# 按字母顺序对列表排序,不包括字母,c#,linq,sorting,C#,Linq,Sorting,我有一个对象列表,每个对象都有一个名称。我试图按字母顺序对列表进行排序(这很容易完成),但我希望任何以字母D开头的项目都按照字母顺序排序。鉴于这些项目: (Apple, Door, Banana, Doorknob, Gorilla, Hammer) 我想将其分类为: (Apple, Banana, Gorilla, Hammer, Door, Doorknob) 我确信我可以用蛮力来处理这个问题,但我希望有一种方法可以用linq通过OrderBy()来完成。然后是by(),但这看起来

我有一个对象列表,每个对象都有一个名称。我试图按字母顺序对列表进行排序(这很容易完成),但我希望任何以字母D开头的项目都按照字母顺序排序。鉴于这些项目:

(Apple, Door, Banana, Doorknob, Gorilla, Hammer)  
我想将其分类为:

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

我确信我可以用蛮力来处理这个问题,但我希望有一种方法可以用linq通过
OrderBy()来完成。然后是by()
,但这看起来更适合在两个不同的属性上排序。我想用linq做的是可能的,还是必须用老式的方法来做?

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

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

您可以通过删除三元运算符来缩短此操作。“false”在“true”之前排序。@gunr2171 true,但由于这不是直观的,我宁愿明确,也不必记住它们的排序顺序。谢谢,这正是我想要的。