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