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); } } } }
internal string GetGroupingColumnName() { return(GroupingColumn.GetPropertyName()); }