public CandidateInfo GetCandidate(string vsCandidateId) { int id; VsCandidatesTable candidate = null; if (int.TryParse(vsCandidateId, out id)) { candidate = VsCandidates.GetData(id); } if (candidate == null || candidate.Count == 0) { return(null); } var candidateItems = VsCandidatesItems.GetData(id); var candidateWebAddresses = VsCandidatesWebAddresses.GetData(id); var webAddressTypes = VsWebAddressTypes.GetAllData() .ToDictionary(r => r.WebAddressTypeId, r => r.Name); var info = new CandidateInfo { LastRefreshDate = candidate[0].LastRefreshDate.AsUtc(), FirstName = candidate[0].FirstName, MiddleName = candidate[0].MiddleName, Nickname = candidate[0].Nickname, LastName = candidate[0].LastName, Suffix = candidate[0].Suffix, BirthDate = candidate[0].BirthDate, BirthPlace = candidate[0].BirthPlace, Pronunciation = candidate[0].Pronunciation, Gender = candidate[0].Gender, Family = candidate[0].Family, Photo = candidate[0].Photo, HomeCity = candidate[0].HomeCity, HomeState = candidate[0].HomeState, Education = candidate[0].Education, Profession = candidate[0].Profession, Political = candidate[0].Political, Religion = candidate[0].Religion, CongMembership = candidate[0].CongMembership, OrgMembership = candidate[0].OrgMembership, SpecialMsg = candidate[0].SpecialMsg, Items = candidateItems.OrderBy(r => r.ItemName) .Select(r => new SimpleListItem(r.ItemName, r.ItemData)) .ToList(), WebAddresses = candidateWebAddresses .OrderBy(r => r.WebAddressTypeId) .Select(r => new SimpleListItem(webAddressTypes.ContainsKey(r.WebAddressTypeId) ? webAddressTypes[r.WebAddressTypeId] : "Code " + r.WebAddressTypeId, Validation.StripWebProtocol(r.WebAddress))) .ToList() }; return(info); }