Ich habe ein List<T>
wo T
mein Event
Typ ist, der ein Feld long
time
Typen hat. Diese Liste wird von einem Webdienst ausgefüllt und wenn ein Ereignis keine Zeit hat, ist der Wert 0.Individuelle Sortierung der Liste <T>
Was ich tun möchte, ist meine Liste aufsteigend nach Zeit sortieren, aber die Elemente mit Zeit = 0 ganz unten.
Momentan erreiche ich dies in einer Art von Hack und ich möchte einen besseren Weg lernen.
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);
Ich versuchte IComparer
eine benutzerdefinierte Implementierung, aber das so gut (hier ist ein Schuss auf ihn) hat nicht funktioniert
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;
}
}
Führung geschätzt wird!
danke!
Dies ist die beste Lösung. Bools können auch sortiert werden! – usr
+1 für Eleganz – phoog
Ich mag es, wenn Dinge auf einfache Weise erledigt werden. +1 – rageit