C# 如何在.net、c中对用户定义的类进行排序#
我有一个用户定义的类对象集合,例如汽车实例,排序的最佳方法是什么 下面是可能的方法,哪一种是最好的,还有其他方法吗C# 如何在.net、c中对用户定义的类进行排序#,c#,.net,class,sorting,C#,.net,Class,Sorting,我有一个用户定义的类对象集合,例如汽车实例,排序的最佳方法是什么 下面是可能的方法,哪一种是最好的,还有其他方法吗 不可比 比较器 比较 充足的 任何想法都将非常受欢迎还有另一种重要且极其简单的方法,除非您绝对要求您进行适当排序:使用LINQ对对象进行排序。例如: var orderedByName = cars.OrderBy(car => car.Name).ToList(); 您可以通过多个投影以不同的方式进行排序,如下所示: var complex = cars.OrderByD
任何想法都将非常受欢迎还有另一种重要且极其简单的方法,除非您绝对要求您进行适当排序:使用LINQ对对象进行排序。例如:
var orderedByName = cars.OrderBy(car => car.Name).ToList();
您可以通过多个投影以不同的方式进行排序,如下所示:
var complex = cars.OrderByDescending(car => car.Year)
.ThenBy(car => car.Model)
.ThenByDescending(car => car.Make)
.ToList();
我只将ToList
放在末尾,以便在末尾创建一个列表
——如果您只需要迭代结果,可以让它惰性地执行排序:
var query = cars.OrderByDescending(car => car.Year)
.ThenBy(car => car.Model)
.ThenByDescending(car => car.Make);
foreach (var car in cars)
{
// Use car
}
我个人认为这是最灵活的分类方式。否则,使用IComparer
和Comparison
是下一个最灵活的方法,因为任何人都可以这样订购IComparable
要求类本身决定如何对项目进行排序,并且只能实现一次,这使得它有些不灵活
IEquatable
用于比较项目是否相等,也用于类似于HashSet
的内容,而不是用于排序。谢谢您的建议,这可以解决我的理解。@John,这是离题的。我深入阅读了你的两本书。除了你的书之外,你会为一位c#专家推荐什么样的c#书。如何申请谷歌的软件工程师?@Pingpong:真正的C语言书籍?规范,理想情况下。。。如果你已经对C语言有了深入的了解,那么我所知道的任何一本书都不会涉及到更多的语言细节。请注意,简而言之,CLR通过C#和C#4在其他方面深入很多。至于申请谷歌,请点击我的简历skeet@pobox.com.@John,简而言之,通过C#的CLR和C#4都是很棒的书,C#的深度也是如此。我会在晚上做的skeet@pobox.com.