2013-09-25 1 views
0

У меня есть список моих г классаОбщий сортировка списка. По крайней мере, один объект должен реализовывать IComparable

Public Class g 
    Public x as Decimal 
    Public y As Decimal 
End Class 

Dim MyQuery As List(Of g) = ... 

, который я пытаюсь разобраться, как

Dim sorted As List(Of g) = MyQuery.OrderBy(Function(x) x.y).ThenBy(Function(x) x.x).ToList() 

К сожалению, я получаю следующую ошибку

На минимум один объект должен реализовать IComparable.

Что я делаю неправильно здесь? Когда я пытаюсь отсортировать по одному свойству я не получаю ошибки

Dim sorted As List(Of g) = MyQuery.OrderBy(Function(x) x.y).ToList()

+0

Пожалуйста, не запутывать код. Предоставьте осмысленные образцы, например, что такое 'Функция (x) x.x'? –

+0

@TimSchmelter Спасибо за ваш комментарий просто обновленный – OrElse

+1

Это должно работать (при условии 'x' /' y' фактически 'decimal'). Может быть, попробуйте использовать другое имя переменной для 'ThenBy' запроса т.е.' ThenBy (функция (у) y.y) '- на самом деле не уверен, если это будет иметь значение, но они могут быть столкновения. – James

ответ

1

код вы предоставили в вашем вопросе работает как есть. Ваш исходный код, скорее всего, не использует decimal для свойств, но какой-либо другого типа, который не реализует IComparable, в результате чего, за исключением вы получаете.