private Dictionary <int, PollOptionInfo> GetOptionsWithVotes(User user) { Dictionary <int, PollOptionInfo> result = this.options.ToDictionary(kvp => kvp.Key, kvp => new PollOptionInfo { name = kvp.Value, votes = 0, voters = new List <int>(), selected = false }); foreach ( var vote in Vote.LoadByIds( from stringId in Config.instance.mainConnection.LoadIdsByConditions( Vote.TableSpec.instance, new ComparisonCondition( Vote.TableSpec.instance.getColumnSpec(Vote.TableSpec.FIELD_POLLID), ComparisonType.EQUAL, this.id.ToString() ), Diapasone.unlimited ) select int.Parse(stringId) ) ) { foreach (int optionId in vote.options) { result[optionId].votes += 1; if (this.isDetailed) { result[optionId].voters.Add(vote.userId); } } if (user != null && vote.user.id == user.id) { foreach (int optionId in vote.options) { result[optionId].selected = true; } } } return(result); }