OrderBy异常“至少有一个对象必须实现IComparable”

时间:2013-01-15 10:40:41

标签: c# linq sorting

我正在尝试对列表进行排序。

此行抛出异常:;

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();

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

我们来看看:

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}

但是,您可以采用第一个距离,或 min / max 距离:

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();

答案 1 :(得分:0)

让我们看下面,对于这个问题,我试过用同样的查询使用两个顺序如下,适合我

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