Example #1
0
        public GroupBy(DataMap dataMap, IList <string> groupingColumnNames, IList <string> selectColumnNames = null)
        {
            _dataMap             = dataMap;
            _groupingColumnNames = groupingColumnNames;
            _selectColumnNames   = selectColumnNames;

            _groupingColumns = new List <GroupingColumn>();
            _maxRowCount     = dataMap.MaxRowCount;
            _cache           = new Dictionary <CacheKey, DataMap>();

            foreach (var c in groupingColumnNames)
            {
                var keyColumn = new GroupingColumn(c, dataMap[c].Unique().UnderlyingList);
                _groupingColumns.Add(keyColumn);

                foreach (var categoryValue in keyColumn.CategoryValues)
                {
                    var filter = new bool[_maxRowCount];

                    var  data   = dataMap[keyColumn.Name].UnderlyingList;
                    bool exists = false;
                    for (var i = 0; i < data.Count; ++i)
                    {
                        if (data[i].Equals(categoryValue))
                        {
                            filter[i] = true;
                            exists    = true;
                        }
                    }

                    if (exists)
                    {
                        keyColumn.FilterSet.Add(categoryValue, filter);
                    }
                }
            }
        }
Example #2
0
 internal string GetGroupingColumnName()
 {
     return(GroupingColumn.GetPropertyName());
 }