C# 计算玩家输赢百分比

C# 计算玩家输赢百分比,c#,.net,linq,C#,.net,Linq,我需要根据球员的表现绘制一张损益表,我希望有人能有类似的计算经验 这就是我所拥有的: public class Player { public virtual bool IsWinner { get; set; } } //Sample list var listOfPlayers = new List<Player>                                   {                                       new P

我需要根据球员的表现绘制一张损益表,我希望有人能有类似的计算经验

这就是我所拥有的:

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 }
                                  };
公共类播放器
{
公共虚拟bool IsWinner{get;set;}
}
//样本清单
var listOfPlayers=新列表
                                  {
新玩家{IsWinner=true},
新玩家{IsWinner=false},
新玩家{IsWinner=false},
新玩家{IsWinner=true},
新玩家{IsWinner=true},
新玩家{IsWinner=false},
新玩家{IsWinner=true}
                                  };
球员列表来自数据库,基本上列表中的每个球员都属于不同的比赛

因此,我有一个函数,其中我提供了玩家列表和列表中相应的索引:

比如说,在索引2中,我有一场赢,两场输,因为我正在绘制一张图表,所以我需要这个函数返回一个双精度值,它将代表赢/输百分比(玩家在0-3场比赛中赢了25%)

public double CalculateWinLossPercentage(层列表,整数索引)
{
双winpercentage=null;
//根据球员总名单计算获胜百分比
//和列表中的当前索引
收益率;
}
提前感谢您的帮助。

public double CalculateWinLossPercentage(层列表,整数索引)
public double CalculateWinLossPercentage(List<Player> listOfPlayers,int index)
{
    int count = listOfPlayers.GetRange(0, index + 1).Count(p => p.IsWinner);
    return ((double)count)/(index+1);
}
{ int count=listOfPlayers.GetRange(0,索引+1).count(p=>p.IsWinner); 返回((双)计数)/(索引+1); }
这将以双精度(0到1之间的数字)返回百分比。 另外,在您的示例中,如果index=2,正确的结果将是33.3%,而不是25%。

public double-CalculateWinLossPercentage(列表层,int-index)
{
int count=listOfPlayers.GetRange(0,索引+1).count(p=>p.IsWinner);
返回((双)计数)/(索引+1);
}
这将以双精度(0到1之间的数字)返回百分比。
另外,在您的示例中,如果索引=2,正确的结果将是33.3%,而不是25%。

我们如何知道哪些记录对应于哪个玩家?现在你的例子似乎有七个不同的玩家,每一个都有一场胜利或一场失败。你有什么理由不只是保持整数totalWins和整数Totalosses,在每场比赛后更新它们,并做基本的数学计算?一胜二负,25%,0-3你的示例数学没有意义道歉,表示有点误导,最初我只有一个球员ID,数据库中的数据组织方式是球员在球员表中多次保存,因为一名球员可能属于不同的比赛。最初,我有一个玩家GUIID,我在player表中查询具有特定GUIID的所有玩家,它会返回一个玩家列表,每个玩家都在特定的比赛中赢过/输过。所以我需要在指数的基础上得到一个百分比,这才是真正的比赛。在这个例子中,7场比赛,我需要根据提供的比赛(例如3场)赢得%的胜利。这没有什么意义。玩家有一个GUIID,但搜索特定的GUIID会返回一个玩家列表?我们如何知道哪些记录对应于哪个玩家?现在你的例子似乎有七个不同的玩家,每一个都有一场胜利或一场失败。你有什么理由不只是保持整数totalWins和整数Totalosses,在每场比赛后更新它们,并做基本的数学计算?一胜二负,25%,0-3你的示例数学没有意义道歉,表示有点误导,最初我只有一个球员ID,数据库中的数据组织方式是球员在球员表中多次保存,因为一名球员可能属于不同的比赛。最初,我有一个玩家GUIID,我在player表中查询具有特定GUIID的所有玩家,它会返回一个玩家列表,每个玩家都在特定的比赛中赢过/输过。所以我需要在指数的基础上得到一个百分比,这才是真正的比赛。在这个例子中,7场比赛,我需要根据提供的比赛(例如3场)赢得%的胜利。这没有什么意义。玩家有一个GUIID,但是搜索特定的GUIID会返回一个玩家列表?
public double CalculateWinLossPercentage(List<Player> listOfPlayers,int index)
{
    int count = listOfPlayers.GetRange(0, index + 1).Count(p => p.IsWinner);
    return ((double)count)/(index+1);
}