Qu'est-ce que vous avez est en réalité deux tables de recherche: par son nom et un par Gamme. Il y a plusieurs façons de les représenter dans la mémoire en fonction de la taille de la table.
L'ajustement pour la plupart-probablement pour la recherche « par nom » est un dictionnaire:
var MultiplierByName = new Dictionary<string, double>() { {"Active",.5}, {"Other", 1.0} };
La gamme est plus délicate. Pour cela, vous voudrez probablement stocker uniquement l'élément minimum ou maximum, en fonction du fonctionnement de votre gamme. Vous pouvez également avoir besoin d'écrire une fonction pour réduire un entier donné à sa valeur de clé stockée correspondante (indice: utilisez la division entière ou l'opérateur mod). De là, vous pouvez choisir un autre dictionnaire (Dictionary<int, double>
), ou si cela fonctionne correctement, vous pouvez faire en sorte que votre fonction de réduction retourne un int séquentiel et utilise un List<double>
pour que votre 'clé' devienne juste un index. Mais comme je l'ai dit: pour savoir avec certitude ce qu'il y a de mieux, nous devons vraiment connaître la portée et la nature des données de la recherche, ainsi que le scénario que vous utiliserez pour y accéder.
Quel est le type de données pour la plage? Souhaitez-vous rechercher par un int dans la gamme, ou seulement par la gamme elle-même? –
La plage est un nombre entier. –
Peut-être un 'Tuple'? – afaolek