我正在忙于一个小型在线投票网络应用程序,现在我努力获得我存储在不同表格中的每一方的总投票数。这是我尝试过的,这个方法从名为[dbo]的投票表中获取每一方。[VoterCandidateMapping]
NpgsqlPolygon
然后我想用这个方法计算与特定部分相关的每个投票,这里是代码
public List<int> GetAllPartIDs()
{
List<int> partieIDs = new List<int>();
var parties = (from votes in voteDB.VoterCandidateMappings
select votes.PartyID).Distinct().ToList();
partieIDs = parties;
return partieIDs;
}
它运行并返回几乎所有数据,但总票数相同
答案 0 :(得分:1)
它无效的原因是您尝试在单个numberOfVotes
变量中存储多个值。
让我们来看看你现在拥有的代码。
第一个foreach
循环计算每一方的投票并分配给numberOfVotes
变量。每次分配值时,numberOfVotes
中的现有值都会被覆盖。在循环结束时numberOfVotes
包含最后一方的投票数。当您使用相同的变量返回结果时,这是您在结果中看到的值。
以下是正确执行此操作的一种方法:
public IQueryable<ResultsViewModel> GetResults()
{
var groupedVotes = voteDB.VoterCandidateMappings
.GroupBy(x => x.PartyID)
.Select(x => new { PartyId = x.Key, NumberOfVotes = x.Count());
return voteDB.Parties
.Select(x => new ResultsViewModel
{
PartyName = x.Name,
TotalVotes = groupedVotes
.Where(y => y.PartyId == x.Id)
.Select(y => y.NumberOfVotes)
.FirstOrDefault()
});
}