Похоже, вы пытаетесь сопоставить каждую комбинацию из 6 входов (12 * 13 * 2 * 3 * 2 * 2 возможностей) с одним из (16 * 8) выходов. Если это так, вам все равно придется много печатать, но переход к коллекции позволит вам легко перенести отображение. Я думаю, что это лучше всего подходит для таблицы базы данных:
Amps | CableSize | CableType | TempRating | SystemType | ConduitType | CableQty | ConduitSize
Вы бы поставили первичный ключ на 6 входных столбцов, а затем просто сделали простой SELECT:
SELECT CableQty, ConduitSize
FROM Table
WHERE Amps = @amps AND CableSize = @cableSize...etc
Чтобы сделать это в быстром и грязном коде, будут работать массивы:
const int AMPS = 0; const int CABLE_SIZE = 1; const int TEMP_RATING = 2; // etc.
var mappings = new Dictionary<int[], int[]>(12 * 13 * 2 * 3 * 2 * 2);
mappings.Add(
new int[] { 1, 1, 1, 1, 1, 1 }, // inputs
new int[] { 1, 2 } //outputs
);
// repeat...a lot
var outputs = mappings.First(inputs => {
inputs[AMPS] == myAmps
&& inputs[CABLE_SIZE] == myCableSize
&& inputs[TEMP_RATING] == myTempRating
&& // etc
});
Это не экономит много времени на вводе - хотя вы можете использовать циклы и тому подобное для заполнения отображений, если есть какая-то логика, - но это чертовски намного более читабельно, чем 6 страниц операторов if Я бы, вероятно, отключил регион или частично загрузил бы сопоставления).