public void PopulateDropdown(string eventCode = null, int olympiadId = -1) { Events.Clear(); var context = DataEntitiesProvider.Provide(); Olympiad_Info currentOlympiad; if (olympiadId < 1) { currentOlympiad = context.Olympiad_Infoes.OrderByDescending(x => x.StartDate).First(); } else { currentOlympiad = context.Olympiad_Infoes.First(x => x.Id == olympiadId); } CurrentOlympiadId = currentOlympiad.Id; foreach (var e in currentOlympiad.Events.Where(x => !x.Code.StartsWith("ZZ")) .OrderBy(x => x.Code)) { Events.Add(new EventVm { Text = e.Code + " " + e.Mind_Sport, Value = e.Code }); } if (eventCode == null) { EventCode = (Events.Any()) ? Events.First().Value : null; } else { EventCode = eventCode; } Types.Clear(); Types.Add(new TypeVm() { Value = null, Text = "(normal)" }); Types.Add(new TypeVm() { Value = "Beginners'", Text = "Beginners'" }); Fees.Clear(); Fees.Add(new EntryFeeVm() { Value = null, Text = "(none)" }); foreach (var f in context.Fees.OrderBy(x => x.Code)) { Fees.Add(new EntryFeeVm() { Value = f.Code, Text = f.DropdownText }); } Locations.Clear(); Locations.Add(new LocationVm() { Value = null, Text = "(no location)" }); foreach (var l in currentOlympiad.Locations.OrderBy(x => x.Location1)) { Locations.Add(new LocationVm() { Value = l.Location1, Text = l.Location1 }); } Olympiads.Clear(); foreach (var o in context.Olympiad_Infoes.OrderByDescending(x => x.StartDate)) { Olympiads.Add(new OlympiadVm { Text = o.FullTitle(), Id = o.Id }); } }