我有一个包含
我想要做的是按时间升序排序我的列表,但将时间等于0的项目放在最底部。
目前我是以一种hack的方式实现这个功能的,我想学习更好的方式。
Event
类型的List<T>
,其中T
是我的类型,并且具有类型为long
的time
字段。这个列表是从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);
我尝试实现一个自定义的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;
}
}
guidance is appreciated!
thanks!