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);
        }