void addMessage(Message msg) { var date = msg.SubmittedDate.Date; GroupedMessage targetMessageGroup = null; targetMessageGroup = GroupedMessages.Where(x => x.DateTime == date).FirstOrDefault(); if (targetMessageGroup == null) { targetMessageGroup = new GroupedMessage() { DateTime = date }; if (GroupedMessages.Count == 0) { GroupedMessages.Add(targetMessageGroup); } else { for (int i = GroupedMessages.Count - 1; i >= 0; i--) { if (date > GroupedMessages[i].DateTime) { GroupedMessages.Insert(i + 1, targetMessageGroup); break; } if (i == 0)//Last { GroupedMessages.Insert(i, targetMessageGroup); } } } } targetMessageGroup.Add(msg); targetMessageGroup = new GroupedMessage(targetMessageGroup.OrderBy(x => x.SubmittedDate).ToList()); }
async Task <List <Message> > RefreshData() { await Task.Delay(1500); //Each time get n old messages.. List <Message> oldMessages = new List <Message>(); if (refreshCount < 3) { for (int i = 0; i < LOAD_MESSAGE_COUNT; i++) { oldMessages.Add(GenRandomMessage()); } var oldestDateTime = GroupedMessages.Where(x => x.DateTime == GroupedMessages.Min(y => y.DateTime)).First().Min(x => x.SubmittedDate); var index = 1; foreach (var msg in oldMessages) { msg.SubmittedDate = oldestDateTime.AddDays(index * -1).AddHours(index * -1); index++; } oldMessages = new List <Message>(oldMessages.OrderByDescending(x => x.SubmittedDate.ToBinary())); } refreshCount++; return(oldMessages); }