private void CalculateChilds(ListSourceGroupInfo parent, IEnumerable<GroupDataItem> dataSource) { var level = parent != null ? parent.Level + 1 : 0; if (level >= GroupCount) { ResultsRepository.AddItem(parent, new List<ListSourceGroupInfo>()); return; } var groupedDataSource = dataSource.GroupBy(x => x.PropertyValues[level]); var repositoryValue = new List<ListSourceGroupInfo>(); foreach (var keyValuePair in groupedDataSource) { var childsDataSource = keyValuePair.ToList(); var summaryRepositories = childsDataSource.Select(x => x.SummaryRepository); var summaryRepository = summaryRepositories.Aggregate(); var groupValue = keyValuePair.Key; var childDataRowCount = summaryRepository.Value(Aggregate.Count, KeyFieldName).As<int>(); var summaries = summaryRepository.Values(GroupSummaryInfo); var groupInfo = new SimpleListSourceGroupInfo { Level = level, GroupValue = groupValue, ChildDataRowCount = childDataRowCount } .AddSummaries(summaries); repositoryValue.Add(groupInfo); CalculateChilds(groupInfo, childsDataSource); } ResultsRepository.AddItem(parent, repositoryValue); }
public List<ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup) { return listServer.GetGroupInfo(parentGroup); }
public virtual Boolean PrefetchRows(ListSourceGroupInfo[] groupsToPrefetch, System.Threading.CancellationToken cancellationToken) { return listServer.PrefetchRows(groupsToPrefetch, cancellationToken); }
private static object CalculateRepositoryKey(ListSourceGroupInfo parentGroup) { return(parentGroup ?? (object)Nothing.Value); }
public List <ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup) { return(Source[CalculateRepositoryKey(parentGroup)]); }
public GroupInfoRepository AddItem(ListSourceGroupInfo parentGroup, List <ListSourceGroupInfo> value) { Source.Add(CalculateRepositoryKey(parentGroup), value); return(this); }
private static object CalculateRepositoryKey(ListSourceGroupInfo parentGroup) { return parentGroup ?? (object)Nothing.Value; }
public List<ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup) { return Source[CalculateRepositoryKey(parentGroup)]; }
public GroupInfoRepository AddItem(ListSourceGroupInfo parentGroup, List<ListSourceGroupInfo> value) { Source.Add(CalculateRepositoryKey(parentGroup), value); return this; }
List <ListSourceGroupInfo> IListServer.GetGroupInfo(ListSourceGroupInfo parentGroup) { throw new NotImplementedException(); }
public List <ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup) { return(GroupInfoRepositoryCache.Value.GetGroupInfo(parentGroup)); }
public List <ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup) { return(new List <ListSourceGroupInfo>(0)); }