public void AddUpdateRangeData(List <Row> rows) { foreach (var item in rows) { AlgorithmRowScoreObjectModel newModel = new AlgorithmRowScoreObjectModel(); newModel.WeeklyProgram = item; newModel.WeeklyProgramScore = AlgorithmRowScoreObjectModel.CalculateWeeklyProgramScore(item.Columns); AddUpdate(newModel); } }
private bool AddUpdate(AlgorithmRowScoreObjectModel newModel) { bool res = true; lock (_sync) { try { if (Count < WeeklyPrograms.Length) { for (int i = 0; i < Count; i++) { if (AlgorithmRowScoreObjectModel.Equal(newModel, WeeklyPrograms[i])) { res = false; break; } } if (res) { WeeklyPrograms[Count++] = newModel; } } else { double min = double.MaxValue; int minIndex = -1; for (int i = 0; i < Count; i++) { if (WeeklyPrograms[i].WeeklyProgramScore < min) { min = WeeklyPrograms[i].WeeklyProgramScore; minIndex = i; } if (AlgorithmRowScoreObjectModel.Equal(newModel, WeeklyPrograms[i])) { res = false; break; } } if (res) { if (newModel.WeeklyProgramScore > min) { WeeklyPrograms[minIndex] = newModel; } } } } catch { } } return(res); }