public Media WeightedElementAt(int index) { int realindex = 0; while (index > 0) { index -= Medias.ElementAt(realindex++).RepeationSetting.Weight; } return(Medias.ElementAt(Math.Max(0, --realindex))); }