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!

questionAnswers(5)

yourAnswerToTheQuestion