/// <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)]); }
private int?GetMatchValueHashCode() { return(_rowMapper == null || !_rowMapper.CanMatchRow || DataRow == null || DataRow.IsAdding ? null : RowMatch.GetHashCode(MatchColumns, DataRow)); }
/// <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); } } } }