至少有一个对象必须实现icomparable

本文关键字:实现 icomparable 一个对象 | 更新日期: 2023-09-27 17:53:42

我正在尝试排序列表。

这行抛出异常:;

List<DistanceInfo> ListedDuration = 
              Distances.OrderBy(o => o.Rows[0].Elements.OrderBy(e => e.Distance))
                       .ToList();

但是,这是有效的:

List<DistanceInfo> ListedDuration = 
              Distances.OrderBy(o => o.Rows[0].Elements[0].Distance)
                       .ToList();

至少有一个对象必须实现icomparable

我们来看一下:

List<DistanceInfo> ListedDuration = Distances.OrderBy(
    o => o.Rows[0].Elements.OrderBy(e => e.Distance)
).ToList();

我们排序的东西是:

o => o.Rows[0].Elements.OrderBy(e => e.Distance)

表示;对每项o排序,序列按距离o.Rows[0].Elements.OrderBy(e => e.Distance)排序。这说不通啊。如何比较两个序列,如{1,3,4}{1,8} ?

但是,您可以取第一个距离,或者最小/最大距离:
List<DistanceInfo> ListedDuration = Distances.OrderBy(
    o => o.Rows[0].Elements[0].Distance
).ToList();
List<DistanceInfo> ListedDuration = Distances.OrderBy(
    o => o.Rows[0].Elements.Min(e => e.Distance)
).ToList();
List<DistanceInfo> ListedDuration = Distances.OrderBy(
    o => o.Rows[0].Elements.Max(e => e.Distance)
).ToList();

让我们看看下面,对于这个问题,我已经尝试了相同的查询使用下面的两个顺序,对我有效

 List<DistanceInfo> ListedDuration = Distances.OrderBy(o => 
 o.Rows[0].Elements[0].Distance).OrderBy(o => o.Rows[0].Elements[0].Distance
 ).ToList();