Deutsch

Linq - At least one object must implement IComparable.

205  
Murr патриот18.12.17 18:40
Murr
18.12.17 18:40 

Linq...

At least one object must implement IComparable.


Элементы списка - однотипные, IComparable имплементирован для элементов списка (ООП нарушена).

Выполняется сортировка элементов по двум полям:

var lst = list.OrderBy(x => x.T1).ThenBy(x => x.T2);

Не догоняю где именно нужна компарация...

#1 
Программист коренной житель18.12.17 19:15
NEW 18.12.17 19:15 
в ответ Murr 18.12.17 18:40

Я бы предположил, что сравниваемые поля тут T1 и T2, соответственно они и должны имплементировать IComparable.

#2 
AlexNek патриот18.12.17 22:19
AlexNek
NEW 18.12.17 22:19 
в ответ Murr 18.12.17 18:40

у меня код тоже требует IComparable.

Не скажешь почему?

#3 
moose старожил18.12.17 22:58
moose
NEW 18.12.17 22:58 
в ответ Murr 18.12.17 18:40

а что такое "list"? это - integer, DataTime или что-то еще? народ не видит и неудомевает. вставьте где-нибудь list.GetType().ToString() и покажите, что там будет за строчка.

If idiots have a majority, it does not mean that they are right
#4 
Программист коренной житель19.12.17 08:37
NEW 19.12.17 08:37 
в ответ moose 18.12.17 22:58

В листе содержится что-то типа такого:

class SomeType
{
    public <some type> T1 { get; }
    public <some (other) type> T2 { get; }
}

И скорее всего <some type> и/или <some (other) type> не имплементируют IComparable.

#5 
Murr патриот19.12.17 09:49
Murr
NEW 19.12.17 09:49 
в ответ Программист 18.12.17 19:15

они и должны имплементировать IComparable.

-----

Оно самое... вчера под вечер уже ступил...

#6 
Murr патриот19.12.17 09:51
Murr
NEW 19.12.17 09:51 
в ответ AlexNek 18.12.17 22:19

Потому как где-то не имплементировано IComparable.

Мой вопрос был - где? Бо, для элементов IList все было прописано.

#7 
Murr патриот19.12.17 09:54
Murr
NEW 19.12.17 09:54 
в ответ moose 18.12.17 22:58

list...

хммм... ну наверное имплементация IList.

Кстати, если встретишь dictionary, то это скорее всего будет имплементация IDictionary...


Да и без разницы что там - был бы IEnumerable имплементирован...

#8 
AlexNek патриот19.12.17 21:41
AlexNek
NEW 19.12.17 21:41 
в ответ Murr 19.12.17 09:51

...

ааа так ты на арабский, перешел сначал вопрос, а после код.

А то код искал искал и не нашел.

#9 
Murr патриот19.12.17 22:00
Murr
NEW 19.12.17 22:00 
в ответ AlexNek 19.12.17 21:41

Эээ... не тупи - там было достаточно инфы для анализа и нахождения решения проблемы...


#10 
AlexNek патриот19.12.17 22:46
AlexNek
NEW 19.12.17 22:46 
в ответ Murr 19.12.17 22:00

Читаю следующее:

Linq...
At least one object must implement IComparable.

остальное воспринимается как некое пояснение. В жисть бы не додул, что приведенный код именно то Linq о котором речь. Ожидал запрос к базе.

#11