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.
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);
Próbowałem wprowadzić zwyczajIComparer
, ale to nie wyszło tak dobrze (tutaj jest jeden strzał)
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;
}
}
wskazówki są mile widziane!
dzięki!