public IEnumerable <InterferenceVictimView> QueryVictimViews(DateTime begin, DateTime end, int cellId, byte sectorId) { var statList = _repository.GetAllVictims(begin, end, cellId, sectorId); var results = from stat in statList group stat by new { stat.ENodebId, stat.SectorId, stat.DestPci, stat.DestENodebId, stat.DestSectorId } into g select new InterferenceVictimView { VictimENodebId = g.Key.ENodebId, VictimSectorId = g.Key.SectorId, Mod3Interferences = g.Average(x => x.Mod3Interferences), Mod6Interferences = g.Average(x => x.Mod6Interferences), OverInterferences10Db = g.Average(x => x.OverInterferences10Db), OverInterferences6Db = g.Average(x => x.OverInterferences6Db), InterferenceLevel = g.Average(x => x.InterferenceLevel), VictimCellName = "未匹配小区" }; var victims = results as InterferenceVictimView[] ?? results.ToArray(); foreach (var victim in victims) { var eNodeb = _eNodebRepository.GetByENodebId(victim.VictimENodebId); victim.VictimCellName = eNodeb?.Name + "-" + victim.VictimSectorId; } return(victims); }
public IEnumerable <InterferenceVictimView> QueryVictimViews(DateTime begin, DateTime end, int cellId, byte sectorId) { var statList = _repository.GetAllVictims(begin, end, cellId, sectorId); var results = from stat in statList group stat by new { stat.ENodebId, stat.SectorId, stat.NeighborPci, stat.DestENodebId, stat.DestSectorId } into g select new InterferenceVictimView { VictimENodebId = g.Key.ENodebId, VictimSectorId = g.Key.SectorId, Mod3Interferences = g.Average(x => x.Pci % 3 == x.NeighborPci % 3 ? (x.Diff0 + x.Diff3 + x.Diff6) : 0), Mod6Interferences = g.Average(x => x.Pci % 6 == x.NeighborPci % 6 ? (x.Diff0 + x.Diff3 + x.Diff6) : 0), OverInterferences10Db = g.Average(x => (x.Diff0 + x.Diff3 + x.Diff6 + x.Diff9)), OverInterferences6Db = g.Average(x => (x.Diff0 + x.Diff3 + x.Diff6)), InterferenceLevel = g.Average( x => (x.Diff0 + x.Diff3 + x.Diff6) * (x?.NeighborRsrpBelow120 ?? x.RsrpBelow120 + x?.NeighborRsrpBetween120110 ?? x.RsrpBetween120110 + x?.NeighborRsrpBetween110105 ?? x.RsrpBetween110105)), VictimCellName = "未匹配小区" }; var victims = results as InterferenceVictimView[] ?? results.ToArray(); foreach (var victim in victims) { var eNodeb = _eNodebRepository.FirstOrDefault(x => x.ENodebId == victim.VictimENodebId); victim.VictimCellName = eNodeb?.Name + "-" + victim.VictimSectorId; var cell = _cellRepository.GetBySectorId(victim.VictimENodebId, victim.VictimSectorId); victim.VictimPci = cell?.Pci ?? 0; } return(victims); }