Ejemplo n.º 1
0
        private GroupPlayerResult[] GetSortedSubArray(
            GroupPlayerResult[] results,
            int startIndex,
            int endIndex,
            ICollection <Match> matches
            )
        {
            GroupPlayerResult[] controversialPlayerResults = new GroupPlayerResult[endIndex - startIndex + 1];
            Array.Copy(
                results,
                startIndex,
                controversialPlayerResults,
                0,
                controversialPlayerResults.Length
                );
            User[]            playersWithControversialResults    = controversialPlayerResults.Select(r => r.Player).ToArray();
            IEnumerable <int> playersWithControversialResultsIds = playersWithControversialResults.Select(p => p.Id);

            Match[] relatedMatches = matches.Where(
                m => playersWithControversialResultsIds.Contains(m.FirstPlayerId) &&
                playersWithControversialResultsIds.Contains(m.SecondPlayerId)
                ).ToArray();
            GroupPlayerResult[] sortedSubArray = GetSortedPlayersResults(playersWithControversialResults, relatedMatches);
            for (int i = 0; i < sortedSubArray.Length; i++)
            {
                GroupPlayerResult trueResult = controversialPlayerResults.Single(r => r.Player.Id == sortedSubArray[i].Player.Id);
                sortedSubArray[i].LoseGameCount    = trueResult.LoseGameCount;
                sortedSubArray[i].LoseMatchesCount = trueResult.LoseMatchesCount;
                sortedSubArray[i].WinGamesCount    = trueResult.WinGamesCount;
                sortedSubArray[i].WinMatchesCount  = trueResult.WinMatchesCount;
            }
            return(sortedSubArray);
        }
Ejemplo n.º 2
0
 private GroupPlayerResult[] GetPlayersResults(IList <User> players, ICollection <Match> matches)
 {
     GroupPlayerResult[] playerResults = new GroupPlayerResult[players.Count];
     for (int i = 0; i < players.Count; i++)
     {
         playerResults[i] = new GroupPlayerResult
         {
             Player           = players[i],
             WinMatchesCount  = GetWinMatchesCount(matches, players[i].Id),
             LoseMatchesCount = GetLoseMatchesCount(matches, players[i].Id),
             WinGamesCount    = GetWinGamesCount(matches, players[i].Id),
             LoseGameCount    = GetLoseGamesCount(matches, players[i].Id)
         }
     }
     ;
     return(playerResults);
 }