2011-06-24 16 views
19
var listair = empcon.OrderBy(x => x.CustomerConnection.OrderBy(y => y.Id)).ToList(); 

Kiedy używam tego oświadczenia następnie otrzymuję wyjątek „Przynajmniej jeden obiekt musi zaimplementować IComparable”Przynajmniej jeden obiekt musi zaimplementować IComparable

Jak mogę rozwiązać ten problem?

+1

Kod, który wysłałeś, nie jest wystarczający. Czym jest empcon? Co to jest CustomerConnection? Powinieneś podać więcej szczegółów. –

Odpowiedz

8

Implementacja IComparable dla typów obiektów zawartych w CustomerConnection i empcon. Jeśli nie mają zaimplementowanej wersji IComparable, nie ma możliwości wykonania zamówienia przez.

26

miałem ten problem z moim zapytaniem kiedy pisałem to źle:

IEnumerable<OrgRelation> relations = from r in tree.OrgRelations 
               orderby r.ParentUnit, r.ChildUnit 
               select r; 

To dlatego rodzicem a dzieckiem Jednostki są oba obiekty jednostki organizacyjnej osoby są powiązane z tym podmiotem OrgRelation. To, czego potrzebowałem, to nie zamawianie obiektu, ale własność obiektu, który naprawdę chciałem posortować. Kiedy dodałem ".Name" zadziałało.

IEnumerable<OrgRelation> relations = from r in tree.OrgRelations 
               orderby r.ParentUnit.Name, r.ChildUnit.Name 
               select r; 
+0

tak, ponieważ przy użyciu nazwy jest to ciąg znaków, a funkcja IComparable jest już zaimplementowana w łańcuchach. – juFo

Powiązane problemy