Пример #1
0
        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;
        }
Пример #10
0
 List <ListSourceGroupInfo> IListServer.GetGroupInfo(ListSourceGroupInfo parentGroup)
 {
     throw new NotImplementedException();
 }
Пример #11
0
 public List <ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup)
 {
     return(GroupInfoRepositoryCache.Value.GetGroupInfo(parentGroup));
 }
 public List <ListSourceGroupInfo> GetGroupInfo(ListSourceGroupInfo parentGroup)
 {
     return(new List <ListSourceGroupInfo>(0));
 }