ear*_*ing 3 c# sorting generics lambda
我有一个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);
Run Code Online (Sandbox Code Playgroud)
我试图实现一个自定义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;
}
}
Run Code Online (Sandbox Code Playgroud)
指导表示赞赏!
谢谢!
Phi*_*hil 11
尝试
events.OrderBy (e => e.Time == 0).ThenBy (e => e.Time);
Run Code Online (Sandbox Code Playgroud)