コード例 #1
0
ファイル: DataPresenter.cs プロジェクト: xydoublez/RDO.Net
        /// <summary>
        /// Matches underlying rows with provided primary key value(s) from other DataSet.
        /// </summary>
        /// <param name="columns">The columns of other DataSet's primary key.</param>
        /// <param name="dataRow">The DataRow of other DataSet.</param>
        /// <returns>The matched <see cref="RowPresenter"/>, <see langword="null"/> if no matched row.</returns>
        public RowPresenter Match(IReadOnlyList <Column> columns, DataRow dataRow = null)
        {
            columns.VerifyNotNull(nameof(columns));
            if (!CanMatchRow)
            {
                return(null);
            }

            var valueHashCode = RowMatch.GetHashCode(columns, dataRow);

            if (!valueHashCode.HasValue)
            {
                return(null);
            }
            return(LayoutManager[new RowMatch(columns, dataRow, valueHashCode.Value)]);
        }
コード例 #2
0
ファイル: RowPresenter.cs プロジェクト: xydoublez/RDO.Net
 private int?GetMatchValueHashCode()
 {
     return(_rowMapper == null || !_rowMapper.CanMatchRow || DataRow == null || DataRow.IsAdding ? null : RowMatch.GetHashCode(MatchColumns, DataRow));
 }
コード例 #3
0
        /// <summary>
        /// Correction des scores (suite écrasement).
        /// </summary>
        public static void RebuildScores()
        {
            var allMatchesFromFiles = new Dictionary <RowMatch, KeyValuePair <string, bool> >();

            for (var year = YEAR_BEGIN; year <= YEAR_END; year++)
            {
                Console.WriteLine(string.Format("Début de traitement de l'année {0}.", year));
                var rows = GetFileRows(year, false);
                rows.RemoveAt(0);
                foreach (var row in rows)
                {
                    if (string.IsNullOrWhiteSpace(row))
                    {
                        continue;
                    }

                    var columns = row.Split(COL_SEPARATOR);
                    allMatchesFromFiles.Add(new RowMatch(Convert.ToUInt32(columns[6]), columns[0]), new KeyValuePair <string, bool>(columns[27], false));
                }
            }

            var noMatchList    = new List <RowMatch>();
            var queryToProceed = new List <string>();

            using (var sqlConnection = new MySqlConnection(SQL_CONNECTION))
            {
                sqlConnection.Open();
                using (var sqlCommand = sqlConnection.CreateCommand())
                {
                    sqlCommand.CommandText = "select ID, concat(tourney_year, '-', tourney_id) as tourney, match_num from matches";
                    using (var sqlReader = sqlCommand.ExecuteReader())
                    {
                        while (sqlReader.Read())
                        {
                            var id             = sqlReader.GetUInt64(sqlReader.GetOrdinal("ID")).ToString();
                            var matchToCompare = new RowMatch(
                                sqlReader.GetUInt32(sqlReader.GetOrdinal("match_num")),
                                sqlReader["tourney"].ToString()
                                );

                            using (var sqlCommandExecute = sqlConnection.CreateCommand())
                            {
                                if (allMatchesFromFiles.ContainsKey(matchToCompare))
                                {
                                    queryToProceed.Add(string.Format("update matches set score = '{0}' where ID = {1}", allMatchesFromFiles[matchToCompare].Key.Replace("'", "\'"), id));
                                    // marque comme traitée
                                    allMatchesFromFiles[matchToCompare] = new KeyValuePair <string, bool>(allMatchesFromFiles[matchToCompare].Key, true);
                                }
                                else
                                {
                                    noMatchList.Add(matchToCompare);
                                }
                            }
                        }
                    }

                    foreach (var query in queryToProceed)
                    {
                        sqlCommand.CommandText = query;
                        sqlCommand.ExecuteNonQuery();
                    }
                }
            }

            if (noMatchList.Any())
            {
                using (var writerIo = new StreamWriter("D:\tennis_atp-master\nomatch1.log"))
                {
                    foreach (var rowsMatch in noMatchList)
                    {
                        writerIo.WriteLine(rowsMatch.Tourney + "|" + rowsMatch.MatchNum + "|");
                    }
                }
            }

            var noMatchList2 = allMatchesFromFiles.Where(item => !item.Value.Value).ToList();

            if (noMatchList2.Any())
            {
                using (var writerIo = new StreamWriter(@"D:\tennis_atp-master\nomatch2.log"))
                {
                    foreach (var kvp in noMatchList2)
                    {
                        writerIo.WriteLine(kvp.Key.Tourney + "|" + kvp.Key.MatchNum + "|" + kvp.Value.Key);
                    }
                }
            }
        }