/// <summary> /// Loads the data. /// </summary> /// <param name="filterSelector">The filter selector.</param> public void LoadData(Func<TransferingItem, bool> filterSelector) { ThreadPool.QueueUserWorkItem((o) => { var list = o as ObservableCollection<TransferingItem>; System.Collections.Generic.IEnumerable<TransferingItem> query = null; if (TargetAccount != null) { query = AccountBookDataContext.TransferingItems .Where(filterSelector) .Where(p => p.ToAccountName == TargetAccount.Name || p.FromAccountName == TargetAccount.Name); } else { query = AccountBookDataContext.TransferingItems .Where(filterSelector).OrderByDescending(p => p.TransferingDate); } var dates = query.Select(p => p.TransferingDate.Date) .OrderByDescending(p => p) .Distinct().ToList(); var tempGroups = new List<DateTimeBasedGroupingViewModel<TransferingItem>>(); foreach (var date in dates) { var group = new DateTimeBasedGroupingViewModel<TransferingItem>(date); group.AddRange(query.Where(p => p.TransferingDate.Date == date)); tempGroups.Add(group); } Deployment.Current.Dispatcher.BeginInvoke(() => { GroupItems = tempGroups; }); IsDataLoaded = true; }); }
private void AddItemToGroup(TransferingItem entry) { var group = this.GroupItems.FirstOrDefault(p => p.Key == entry.TransferingDate.Date); if (group == null) { group = new DateTimeBasedGroupingViewModel<TransferingItem>(entry.TransferingDate); this.GroupItems.AddRange(group); } group.Add(entry); }