Jon*_*eet 11
还有另一种重要而且非常简单的方法,除非你绝对要求你就地排序:使用LINQ to Objects.例如:
var orderedByName = cars.OrderBy(car => car.Name).ToList();
Run Code Online (Sandbox Code Playgroud)
您可以通过多种投影进行订购,并以多种方式进行订购,如下所示:
var complex = cars.OrderByDescending(car => car.Year)
.ThenBy(car => car.Model)
.ThenByDescending(car => car.Make)
.ToList();
Run Code Online (Sandbox Code Playgroud)
我只是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
}
Run Code Online (Sandbox Code Playgroud)
我个人认为这是最灵活的排序方式.否则,使用IComparer<T>和Comparison<T>是下一个最灵活的,因为任何人都可以这样订购.IComparable<T>需要类本身来决定如何订购项目,并且你只能实现一次,这使它有点不灵活.
IEquatable<T>用于比较项目的相等性,因此用于类似的事情HashSet<T>,而不是用于订购.