在c#中划分变量不符合我的预期

时间:2016-03-22 19:17:03

标签: c#

我正在尝试进行简单的计算,由于某种原因,我的返回变量为零。在我的模型中,我试图获得所有赞成票的总和,然后将其除以总票数。以下是一些相关的课程。

    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#很新,所以我希望这很明显,但我错过了什么?

1 个答案:

答案 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.