为什么我不能在C#对象中执行基本方程?

时间:2014-05-23 00:55:59

标签: c# linq

ViewBag.WinLossRatio = 
    new WinLossRatioVM
    {
        Wins = ctx.Games.Where(p => p.IsWin == true).Count(),
        Total = ctx.Games.Count(),
        Percent = ctx.Games.Where(p => p.IsWin == true).Count() / ctx.Games.Count() * 100
    };

在上面的代码中,我只是尝试获得胜利的比例与所玩的游戏总数。前两个属性,Wins和Total分别返回5和11。最后一个属性仅返回零。该模型简单如下:

public class WinLossRatioVM
{
    public int Wins { get; set; }
    public int Total { get; set; }
    public int Percent { get; set; }
}

为什么百分比会返回零?

2 个答案:

答案 0 :(得分:2)

将属性转换为小数,浮点数或双精度,因为您需要百分比计算的小数位数。

答案 1 :(得分:1)

Percent = ctx.Games.Where(p => p.IsWin == true).Count() / ctx.Games.Count() * 100

使用整数除法,您需要向浮点数转换至少一个参数,以便使用浮点除法:

Percent = Convert.ToInt32(ctx.Games.Where(p => p.IsWin == true).Count() / (float)(ctx.Games.Count()) * 100);

整数除法将截断任何小数分量,在百分比计算中保留0< 100%