Ordenação Personalizada de Lista <T>
eu tenho umList<T>
OndeT
é meuEvent
tipo que tem um campotime
do tipolong
. Essa lista é preenchida em um serviço da Web e, se um evento não tiver um horário, o valor definido será 0.
O que eu quero fazer é ordenar a minha lista ascendente pelo tempo, mas colocar os itens com o tempo = 0 na parte inferior.
Atualmente, estou realizando isso de uma maneira bastante agressiva e quero aprender uma maneira melhor.
<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>
Eu tentei implementar um costumeIComparer
, mas isso não funcionou tão bem (aqui está uma chance)
<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>
orientação é apreciada!
obrigado!