public void Save(IEnumerable <PureInterferenceStat> stats)
 {
     foreach (PureInterferenceStat stat in stats)
     {
         PureInterferenceStat item = PureInterferenceStats.FirstOrDefault(x =>
                                                                          x.CellId == stat.CellId && x.SectorId == stat.SectorId &&
                                                                          x.RecordDate == stat.RecordDate);
         if (item == null)
         {
             context.PureInterferenceStats.Add(stat);
             context.SaveChanges();
         }
     }
 }
        public static void Import(this List <PureInterferenceStat> stats, List <MrRecordSet> recordSets)
        {
            List <MrInterferenceRecord> records
                = recordSets.GenerateInterferenceRecords <MrInterferenceRecord, MrRecordSet,
                                                          MrInterference, MrRecord, MrReferenceCell, MrNeighborCell>();

            List <InterferenceDetails> details = new List <InterferenceDetails>();

            details.Import(records);

            foreach (InterferenceDetails detail in details)
            {
                InterferenceVictim[] victims = detail.Victims.ToArray();
                Array.Sort(victims, new InterferenceVictimComparer());
                PureInterferenceStat stat = new PureInterferenceStat
                {
                    CellId            = detail.CellId,
                    SectorId          = detail.SectorId,
                    VictimCells       = victims.Length,
                    InterferenceCells = victims.Count(v => v.InterferenceRatio > RuInterferenceStat.RatioThreshold),
                    RecordDate        = detail.RecordDate
                };
                if (victims.Length > 0)
                {
                    stat.FirstVictimCellId      = victims[0].CellId;
                    stat.FirstVictimSectorId    = victims[0].SectorId;
                    stat.FirstVictimTimes       = victims[0].MeasuredTimes;
                    stat.FirstInterferenceTimes = victims[0].InterferenceTimes;
                }
                if (victims.Length > 1)
                {
                    stat.SecondVictimCellId      = victims[1].CellId;
                    stat.SecondVictimSectorId    = victims[1].SectorId;
                    stat.SecondVictimTimes       = victims[1].MeasuredTimes;
                    stat.SecondInterferenceTimes = victims[1].InterferenceTimes;
                }
                if (victims.Length > 2)
                {
                    stat.ThirdVictimCellId      = victims[2].CellId;
                    stat.ThirdVictimSectorId    = victims[2].SectorId;
                    stat.ThirdVictimTimes       = victims[2].MeasuredTimes;
                    stat.ThirdInterferenceTimes = victims[2].InterferenceTimes;
                }
                stats.Add(stat);
            }
        }