gpt4 book ai didi

c# - 如何在 .net 中对用户定义的类进行排序,c#

转载 作者:行者123 更新时间:2023-11-30 19:12:35 24 4
gpt4 key购买 nike

我有一组用户定义的类对象,例如汽车实例,最好的排序方式是什么。

以下是可能的方法,哪种方法最好,还有其他方法吗?

  1. IComparable
  2. 比较器
  3. 比较
  4. IEquatable

任何想法将不胜感激

最佳答案

还有另一种重要且极其简单的方法,除非您绝对要求就地排序:使用 LINQ to Objects。例如:

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最后创建一个 List<Car>最后 - 如果您只需要迭代结果,您可以让它延迟执行排序:

var query = cars.OrderByDescending(car => car.Year)
.ThenBy(car => car.Model)
.ThenByDescending(car => car.Make);

foreach (var car in cars)
{
// Use car
}

我个人认为这是最灵活的排序方式。否则,使用 IComparer<T>Comparison<T>是下一个最灵活的,因为任何人都可以这样订购。 IComparable<T>需要类本身来决定项目将如何排序,并且您只能实现一次,这使得它有些不灵活。

IEquatable<T>用于比较项目的平等,因此用于HashSet<T>之类的东西, 不用于订购。

关于c# - 如何在 .net 中对用户定义的类进行排序,c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com