我有一个List<T>
其中T
是我的Event
具有字段类型time
类型的long
。 这个列表是从web服务填充,如果事件没有时间,将值设置为0。
我想要做的是按时间排序我的名单上升,但地方项目与时间= 0在最底部。
目前,我在一个黑客那种时尚的实现这个和我想学习更好的方法。
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);
我试图实现自定义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;
}
}
指导表示赞赏!
谢谢!