2013-01-15 1 views
1

목록을 정렬하려고합니다.OrderBy 예외 "하나 이상의 개체가 IComparable을 구현해야합니다."

이 줄은 예외를 throw합니다.

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

BTW 항상 거리 객체마다 적어도 하나의 행이 있어야합니까? 네, 거리를 어떻게 정렬할지 명확하지 않습니다. –

+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(); 
관련 문제