public IEnumerable <T> GetRegionStats <T>(Func <TStat, T> selector, Func <TStat, string> regionSelector, string region) { return(RegionStats.Select(x => x.Value).Select(stats => stats.FirstOrDefault(x => regionSelector(x) == region)).Select( stat => stat != null ? selector(stat) : default(T)).ToList()); }
protected DailyStatList(IEnumerable <TStat> stats, string regionName) : this() { IEnumerable <DateTime> dates = stats.Select(x => x.StatDate).Distinct(); foreach (DateTime date in dates) { IEnumerable <TStat> oneDayStats = stats.Where(x => x.StatDate == date); TStat currentCityStat = oneDayStats.GetMergeStat(regionName); SummaryStats.Add(date, currentCityStat); RegionStats.Add(date, oneDayStats); IEnumerable <string> existedRegions = oneDayStats.Select(x => x.Region).Distinct(); foreach (string region in existedRegions) { if (Regions.FirstOrDefault(x => x == region) == null) { Regions.Add(region); } } } }
public async Task SeedRegionStats() { foreach (var reg in _context.Region.Include(rs => rs.Stats).ToList()) { var countryCount = await GetTotlCountryNumberForRegionName(reg.Name); if (reg.Stats == null) { var newStats = new RegionStats() { CountryCount = countryCount, RegionId = reg.Id }; reg.Stats = newStats; await _context.SaveChangesAsync(); } else if (reg.Stats.CountryCount != countryCount) { reg.Stats.CountryCount = countryCount; await _context.SaveChangesAsync(); } } }