На самом деле у вас есть две таблицы поиска: одна по имени и одна по диапазону. Есть несколько способов представить их в памяти в зависимости от размера таблицы.
Наиболее подходящим для поиска по имени является словарь:
var MultiplierByName = new Dictionary<string, double>() { {"Active",.5}, {"Other", 1.0} };
Диапазон сложнее. Для этого вы, вероятно, захотите хранить либо минимальный, либо максимальный элемент, в зависимости от того, как работает ваш диапазон. Вам также может понадобиться написать функцию, которая приведет к уменьшению любого заданного целого числа до соответствующего значения сохраненного ключа (подсказка: используйте целочисленное деление или оператор мода).
Оттуда вы можете выбрать другой словарь (Dictionary<int, double>
), или, если он сработает правильно, вы можете сделать так, чтобы ваша функция Reduce возвращала последовательный int и использовала List<double>
, чтобы ваш «ключ» просто стал индексом.
Но, как я уже сказал: чтобы точно знать, что лучше, нам действительно нужно знать объем и характер данных в поиске, а также сценарий, который вы будете использовать для доступа к нему.