using System.Collections.Generic;
static int ToConfigValueFromDisplay<T>(T displayValue, IList<T> values){
var index = values.IndexOf(displayValue);
var percent = ((double) index) / (values.Count - 1);
return (int)Math.Round(percent*100);
static int PercentageToIndex<T>(IList<T> list, int percentage){
var percentToDecimal = (double) percentage / 100.0;
var index = percentToDecimal * (list.Count - 1);
return (int)Math.Round(index);
public static void Main()
var ui = new List<string>(){"one","two","three","four","five","six","seven","eight","nine"};
Console.WriteLine(Program.ToConfigValueFromDisplay("one",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("two",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("three",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("four",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("five",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("six",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("seven",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("eight",ui));
Console.WriteLine(Program.ToConfigValueFromDisplay("nine",ui));
Console.WriteLine(Program.PercentageToIndex(ui,0));
Console.WriteLine(Program.PercentageToIndex(ui,12));
Console.WriteLine(Program.PercentageToIndex(ui,25));
Console.WriteLine(Program.PercentageToIndex(ui,37));
Console.WriteLine(Program.PercentageToIndex(ui,50));
Console.WriteLine(Program.PercentageToIndex(ui,62));
Console.WriteLine(Program.PercentageToIndex(ui,75));
Console.WriteLine(Program.PercentageToIndex(ui,87));
Console.WriteLine(Program.PercentageToIndex(ui,100));