Esempio n. 1
0
        // 게임당 타자의 픽을 구한다.
        private List <Pick> GetBestBatters(Match match)
        {
            List <Pick> picks   = new List <Pick>();
            var         lineUps = dbMgr.SelectAll <LineUp>();

            // 홈팀 타자 가지고오기
            var homeTeamLineUps = from l in lineUps
                                  where l.MatchId == match.Id && l.AttackType == AttackType.Home &&
                                  l.EntryType == EntryType.Starting
                                  select l;

            // 어웨이팀 타자 가지고 오기
            var awayTeamLineUps = from l in lineUps
                                  where l.MatchId == match.Id && l.AttackType == AttackType.Away &&
                                  l.EntryType == EntryType.Starting
                                  select l;

            // 투수 가지고 오기
            var matchs    = dbMgr.SelectAll <Match>();
            var schedules = dbMgr.SelectAll <Schedule>();
            var ths       = dbMgr.SelectAll <Th>();
            var bats      = dbMgr.SelectAll <Bat>();

            var players = dbMgr.SelectAll <Player>();

            var queryTh = from m in matchs
                          join s in schedules
                          on m.GameId equals s.GameId
                          join t in ths
                          on m.Id equals t.MatchId
                          where m.GameId == match.GameId && t.Number == 1
                          select t;

            var queryPitcher = (from t in queryTh
                                join b in bats
                                on t.Id equals b.ThId
                                join p in players
                                on b.PitcherId equals p.PlayerId
                                where b.DetailResult.StartsWith("1번")
                                select new { PlayerId = p.PlayerId, Name = p.Name }).ToList();

            var homeTeamPitcher = queryPitcher.ToList()[0];
            var awayTeamPitcher = queryPitcher.ToList()[1];

            foreach (var batter in homeTeamLineUps)
            {
                var ratio = CalcRatio(match, batter.PlayerId, awayTeamPitcher.PlayerId);
                if (ratio != 0)
                {
                    var pick = new Pick();
                    pick.MatchId  = match.Id;
                    pick.PlayerId = batter.PlayerId;
                    pick.Ratio    = ratio;
                    picks.Add(pick);
                }
            }

            foreach (var batter in awayTeamLineUps)
            {
                var ratio = CalcRatio(match, batter.PlayerId, homeTeamPitcher.PlayerId);
                if (ratio != 0)
                {
                    var pick = new Pick();
                    pick.MatchId  = match.Id;
                    pick.PlayerId = batter.PlayerId;
                    pick.Ratio    = ratio;
                    picks.Add(pick);
                }
            }

            return(picks);
        }
Esempio n. 2
0
        // 게임당 타자의 픽을 구한다.
        private List<Pick> GetBestBatters(Match match)
        {
            List<Pick> picks = new List<Pick>();
            var lineUps = dbMgr.SelectAll<LineUp>();

            // 홈팀 타자 가지고오기
            var homeTeamLineUps = from l in lineUps
                                  where l.MatchId == match.Id && l.AttackType == AttackType.Home
                                  && l.EntryType == EntryType.Starting
                                  select l;

            // 어웨이팀 타자 가지고 오기
            var awayTeamLineUps = from l in lineUps
                                  where l.MatchId == match.Id && l.AttackType == AttackType.Away
                                    && l.EntryType == EntryType.Starting
                                  select l;

            // 투수 가지고 오기
            var matchs = dbMgr.SelectAll<Match>();
            var schedules = dbMgr.SelectAll<Schedule>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();

            var players = dbMgr.SelectAll<Player>();

            var queryTh = from m in matchs
                          join s in schedules
                          on m.GameId equals s.GameId
                          join t in ths
                          on m.Id equals t.MatchId
                          where m.GameId == match.GameId && t.Number == 1
                          select t;

            var queryPitcher = (from t in queryTh
                                join b in bats
                                on t.Id equals b.ThId
                                join p in players
                                on b.PitcherId equals p.PlayerId
                                where b.DetailResult.StartsWith("1번")
                                select new { PlayerId = p.PlayerId, Name = p.Name }).ToList();

            var homeTeamPitcher = queryPitcher.ToList()[0];
            var awayTeamPitcher = queryPitcher.ToList()[1];

            foreach (var batter in homeTeamLineUps)
            {
                var ratio = CalcRatio(match, batter.PlayerId, awayTeamPitcher.PlayerId);
                if (ratio != 0)
                {
                    var pick = new Pick();
                    pick.MatchId = match.Id;
                    pick.PlayerId = batter.PlayerId;
                    pick.Ratio = ratio;
                    picks.Add(pick);
                }
            }

            foreach (var batter in awayTeamLineUps)
            {
                var ratio = CalcRatio(match, batter.PlayerId, homeTeamPitcher.PlayerId);
                if (ratio != 0)
                {
                    var pick = new Pick();
                    pick.MatchId = match.Id;
                    pick.PlayerId = batter.PlayerId;
                    pick.Ratio = ratio;
                    picks.Add(pick);
                }
            }

            return picks;

        }