用方法语法排序-机器人学导论第三版课后习题答案
23.4 orderby子句如下所示: orderby n
与where
子句一样,orderby
子句也是可选的。只要添加一行,就可以给任意查询的结果排序。如果不使用LINQ,就需要添加至少几行代码和几个方法或集合,来存储根据选择实现的排序算法重新排序的结果。要是有多个需要排序的类型呢?那就得为每个类型实现一系列排序方法。而使用LINQ,你根本不需要做这些工作,只需在查询语句中添加一个子句即可。
默认情况下,orderby
子句是升序(A到Z),但如果你想要降序(Z到A),只需添加descending
关键字就行:orderby n descending
。这样,示例的结果就会变成:Smythe, Smith, Small, Singh, Samba。
你还可以按照任意表达式进行排序,而无需重新编写查询。要按姓名中的最后一个字母排序,而不是按一般的字母顺序排序,就只需添加如下orderby
子句:orderby n.Substring(n.Length - 1)
。结果如下:Samba, Smythe, Smith, Singh, Small。
为什么Smith会在Singh前面?因为只考虑最后一个字母(a, e, h, l)的顺序,所以Smith排在了Singh之前。
如果你对更多的LINQ查询语法感兴趣,可以参考这篇关于C#linq查询之动态OrderBy用法实例,它详细介绍了如何在C#中使用LINQ进行动态排序。而如果你遇到GroupBy和OrderBy失效的问题,可以看看这篇解决C#中Linq GroupBy和OrderBy失效的方法。想了解更多关于LINQ语法的内容,建议看看Linq语法API,它包含了丰富的LINQ语法示例。
这样一来,学习LINQ的乐趣不仅在于其强大的功能,更在于其简单易用的语法设计,真是让人忍不住要探索更多!