private static async Task <List <FundStyleExposure> > GetFundStyleExposures(string fundCode, DateTime begin, DateTime end) { var exposures = DataDao.GetFundStyleExposures(fundCode, begin, end); if (exposures.IsNullOrEmpty()) { Log.Information($"正在计算 {fundCode} {begin.ToString("yyyy-MM-dd")}~{end.ToString("yyyy-MM-dd")} 的风格暴露度..."); exposures = await GetFundStyleExposures2(fundCode, begin, end); } else { var first = exposures.First(); if (first.Date > begin) { Log.Information($"正在计算 {fundCode} {begin.ToString("yyyy-MM-dd")}~{first.Date.AddDays(-1).ToString("yyyy-MM-dd")} 的风格暴露度..."); var ne = await GetFundStyleExposures2(fundCode, begin, first.Date.AddDays(-1)); if (ne.Any()) { exposures.InsertRange(0, ne); } } var last = exposures.Last(); if (last.Date < end) { Log.Information($"正在计算 {fundCode} {last.Date.AddDays(1).ToString("yyyy-MM-dd")}~{end.ToString("yyyy-MM-dd")} 的风格暴露度..."); var ne = await GetFundStyleExposures2(fundCode, last.Date.AddDays(1), end); if (ne.Any()) { exposures.AddRange(ne); } } } return(exposures); }