c# - 计算玩家输赢百分比

标签 c# .net linq

我需要根据玩家的表现绘制一个输赢图表,我希望有人有类似计算的经验。

这就是我所拥有的:

public class Player
{
   public virtual bool IsWinner { get; set; }
}

//Sample list
var listOfPlayers = new List<Player>
                                  {
                                      new Player{ IsWinner = true },
                                      new Player{ IsWinner = false },
                                      new Player{ IsWinner = false },
                                      new Player{ IsWinner = true },
                                      new Player{ IsWinner = true },
                                      new Player{ IsWinner = false },
                                      new Player{ IsWinner = true }
                                  };

玩家列表来自数据库,基本上列表中的每个玩家都属于不同的比赛。

所以我有这个功能,我在其中提供玩家列表和列表中的相应索引:

例如,在索引 2 处,我有 1 胜 2 负,因为我正在渲染图表,我需要此函数返回一个代表赢/输百分比的 double 值,这样它就会有(玩家赢了 25匹配 0-3 的百分比)

public double CalculateWinLossPercentage(List<Player> listOfPlayers,int index)
{
    double winpercentage = null;
    //calculate win percentage base on the total list of players 
    //and the current index in list
    return winpercentage;
}

预先感谢您的帮助。

最佳答案

public double CalculateWinLossPercentage(List<Player> listOfPlayers,int index)
{
    int count = listOfPlayers.GetRange(0, index + 1).Count(p => p.IsWinner);
    return ((double)count)/(index+1);
}

这将以 double 形式返回百分比(介于 0 和 1 之间的数字)。 此外,在您的示例中,索引 = 2 时,正确的结果将是 33.3%,而不是 25%。

关于c# - 计算玩家输赢百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11585196/

相关文章:

c# - 访问 C# float[] 作为 byte[]

c# - P/Invoke c# 和 native c++

.net - 开发/调试 Windows 服务的最简单方法

c# - 将单个查询结果添加到列表中

asp.net - 在 TableRowCollection 上使用 linq

c# - EF4 如何将一个表连接到两个或多个其他表

.net - 是否有用于验证安装了哪个版本的 .NET 的命令行命令

c# - JWT 不记名 token 不适用于 ASP.Net Core 3.1 + Identity Server 4

c# - Linq - 如何在列表的最大元素上应用 where 子句

c# - 如何接受数组作为 ASP.NET MVC Controller 操作参数?