我有一个List<T>
where T
is my Event
type ,它有一个time
type字段long
。此列表由 Web 服务填充,如果事件没有时间,则值设置为 0。
我想要做的是按时间升序对列表进行排序,但将时间= 0 的项目放在最底部。
目前,我正在以一种 hack 的方式完成此任务,并且我想学习一种更好的方法。
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);
我尝试实现一个 custom IComparer
,但效果并不好(这是一个镜头)
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;
}
}
指导表示赞赏!
谢谢!