Niestandardowe sortowanie listy <T>
mamList<T>
gdzieT
jest mójEvent
typ, który ma poletime
typulong
. Ta lista jest wypełniana z usługi internetowej, a jeśli zdarzenie nie ma czasu, ustawiona wartość wynosi 0.
Chcę sortować listę rosnąco według czasu, ale umieść przedmioty z czasem = 0 na samym dole.
Obecnie wykonuję to w sposób hackowy i chcę się nauczyć lepszego sposobu.
<code>var events = new ObservableCollection<Event>(); var resp = JsonConvert.DeserializeObject<Events>(restResponse.Content).Items; var notime = resp.Where(r => r.time == 0); var yestime = resp.Where(r => r.time > 0); yestime.ToList().ForEach(events.Add); notime.ToList().ForEach(events.Add); CallbackInternal(callback, events); </code>
Próbowałem wprowadzić zwyczajIComparer
, ale to nie wyszło tak dobrze (tutaj jest jeden strzał)
<code>public class EventComparer : IComparer<Event> { public int Compare(Event x, Event y) { if (x.time == 0) return 0; if (x.time < y.time) return -1; if (x.time > y.time) return 1; return 0; } } </code>
wskazówki są mile widziane!
dzięki!