public OccupancyService(OccupancyDefinition definition) { //assuming there are no overlapping ranges, because we check that on input var maxAge = definition.Ranges .Where(r => r.Type == AgeRangeTypes.Adult) .Select(r => r.UpperBound) .First(); _filter = new AgeRangeTypes[maxAge + 1]; foreach (var range in definition.Ranges) { var type = range.Type; for (var i = range.LowerBound; i < range.UpperBound + 1; i++) { _filter[i] = type; } } }
public AgeRange(AgeRangeTypes type, int lowerBound, int upperBound) { LowerBound = lowerBound; Type = type; UpperBound = upperBound; }