2013-01-15 74 views
1

我试图对列表进行排序。OrderBy异常“至少有一个对象必须实现IComparable”

此行引发异常:;

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

通过使用第二个例子?目前还不清楚你真正想做什么。也许有些解释? – spender

+1

顺便说一句你确定每个距离物体总是会有至少一行吗?是的,目前还不清楚你想如何分类你的距离。 –

+0

@lazyberezovsky是啊我确定,每次一行。我想要升序排序。 – OzanWt

回答

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}

你可能会,但是,采取第一距离,或分钟/最大距离:

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

让我们来看看下面的,对于这个问题,我有相同的查询,试图用二阶通过如下所示,适用于我

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