我正在尝试进行简单的计算,由于某种原因,我的返回变量为零。在我的模型中,我试图获得所有赞成票的总和,然后将其除以总票数。以下是一些相关的课程。
private int _total = -1;
public int Total
{
get
{
if (_total < 0)
{
_total = get_total(TopicId);
}
return _total;
}
}
private int get_total(int id)
{
int itotal = 0;
int ycount = 0;
ApplicationDbContext db = new ApplicationDbContext();
List<Vote> VoteList = db.Votes.Where(t => t.TopicId == id).ToList();
if (VoteList != null && VoteList.Count > 0)
{
//lcount = VoteList.Count();
foreach (Vote sub in VoteList)
{
var c = from v in VoteList
where v.Score == true
select v.VoteId;
ycount = c.Count();
itotal = ycount / VoteList.Count();
}
}
return itotal;
}
在for each中,如果我调试“ycount”等于正确的数字并且Votelist.count等于正确的数字,但是itotal是0.我还尝试将votelist.count =变为一个变量,但是这产生了相同的结果。我对c#很新,所以我希望这很明显,但我错过了什么?
答案 0 :(得分:0)
ycount
小于或等于整个列表(VoteList.Count
),因此如果每个v.Score
为真,则答案将始终为1,对于任何其他情况,答案将始终为零。
如果您正在寻找投票的分数/百分比,那么您需要更改用于计算itotal
的等式。这是一个例子,如果你要求整数百分比的投票,那么&#34;得分&#34;:
itotal = (int)((float)ycount / (float)VoteList.Count()) * 100.0); // integer percentage 0 to 100.