public IEnumerable <Freeze> GetFreezeOnSite(string siteId) { DateTime from; if (DateTime.UtcNow.Hour < 12) { from = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0, DateTimeKind.Utc); } else { from = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 12, 0, 0, DateTimeKind.Utc); } Site site = siteRepository.Get(siteId); Dictionary <string, IEnumerable <Freeze> > freezeByDevice = freezeRepository.GetByDevice(site.Devices.Select(e => e.Id), from); if (freezeByDevice == null) { return(new List <Freeze>()); } IList <Freeze> freezeForecast = new List <Freeze>(); IEnumerable <DateTime> dates = freezeByDevice.Values.SelectMany(e => e.Select(i => i.Date)).Distinct(); foreach (DateTime date in dates) { IEnumerable <Freeze> freezeAtDate = freezeByDevice.Values.SelectMany(e => e.Where(i => i.Date == date)); freezeForecast.Add(new Freeze { Date = date, TrustIndication = freezeAtDate.Max(e => e.TrustIndication), DeviceId = freezeAtDate.First(e => e.TrustIndication == freezeAtDate.Max(i => i.TrustIndication)).DeviceId }); } return(freezeForecast); }