public List <List <AllDeviceLive> > SelectedSensorInformation() { List <string> towerDevice = new List <string>(); List <int> getdevicelive = new List <int>(); List <DeviceType> deviceLiveAll = new List <DeviceType>(); var deviceType = chartData.deviceTypesList(); towerDevice = chartData.TowerCountList(); deviceType.ForEach(type => { var deviceCount = chartData.DeviceMaxCount(type.ID); if (deviceCount.ToList().Count != 0) { getdevicelive.Add(deviceCount.Max()); } else { getdevicelive.Add(0); } }); for (int i = 0; i < getdevicelive.Count; i++) { for (int j = 0; j < getdevicelive[i]; j++) { deviceLiveAll.Add(deviceType[i]); } } towerDevice.ForEach(device => { List <DeviceSensorList> Sensors = new List <DeviceSensorList>(); List <TowerDevices> tw = new List <TowerDevices>(); List <List <WalkTowerDevice> > SensorLive = new List <List <WalkTowerDevice> >(); AllDeviceLive sen = new AllDeviceLive(); List <AllDeviceLive> allDeviceLive = new List <AllDeviceLive>(); var Devices = chartData.TowerDevicesList(device); deviceLiveAll.ForEach(dl => { var dv = Devices.Where(d => d.DeviceName == dl.Name).FirstOrDefault(); if (dv != null) { Devices.Remove(dv); var sensor = chartData.SensorSelected(dv.IP, dv.DeviceName); if (sensor.Count != 0) { DeviceSensorList deviceSensors = new DeviceSensorList(); deviceSensors.Sensors = sensor; deviceSensors.DeviceSensor = dv; Sensors.Add(deviceSensors); tw.Add(dv); } else { DeviceSensorList deviceSensors = new DeviceSensorList(); deviceSensors.Sensors = new List <WalkTowerDevice>(); deviceSensors.DeviceSensor = new TowerDevices(); Sensors.Add(deviceSensors); TowerDevices tow = new TowerDevices(); var tv = Devices.Where(d => d.TowerName == device && d.DeviceName == dl.Name).FirstOrDefault(); if (tv != null) { tow.IP = tv.IP; } tow.DeviceName = dl.Name; tow.TowerName = device; tw.Add(tow); } } else { DeviceSensorList dvcsensor = new DeviceSensorList(); TowerDevices tow = new TowerDevices(); tow.DeviceName = dl.Name; tow.TowerName = device; tw.Add(tow); dvcsensor.DeviceSensor = tow; dvcsensor.Sensors = new List <WalkTowerDevice>(); Sensors.Add(dvcsensor); } }); if (Sensors.Count != 0) { sen.TowerSensor = tw; deviceCount = maxDevice.maxCountReturn(deviceCount, tw.Count); int maxCount = Sensors.Max(s => s.Sensors.Count); Sensors.ForEach(s => { int sensorCount = s.Sensors.Count; if (sensorCount < maxCount) { int cou = maxCount - sensorCount; for (int itm = 0; itm < cou; itm++) { s.Sensors.Add(new WalkTowerDevice()); } } }); int count = Sensors.Max(s => s.Sensors.Count); for (int i = 0; i < count; i++) { List <WalkTowerDevice> Sen = new List <WalkTowerDevice>(); for (int j = 0; j < Sensors.Count; j++) { if (Sensors[j].Sensors[i].DivideMultiply != null && Sensors[j].Sensors[i].DivideMultiply != "") { string values = Sensors[j].Sensors[i].DivideMultiply.Substring(1, Sensors[j].Sensors[i].DivideMultiply.Length - 1); var divide = (Sensors[j].Sensors[i].DivideMultiply.Substring(0, 1)); if (divide == "/") { Sensors[j].Sensors[i].Type = (double.Parse((Sensors[j].Sensors[i].Type), System.Globalization.CultureInfo.InvariantCulture) / Convert.ToInt32(values)).ToString(); } } Sen.Add(Sensors[j].Sensors[i]); } SensorLive.Add(Sen); } sen.SensorDevice = SensorLive; allDeviceLive.Add(sen); } if (allDeviceLive[0].SensorDevice.Count != 0) { deviceSensorLive.Add(allDeviceLive); } }); return(deviceSensorLive); }