/// <summary>
        /// Реальный курс на дату
        /// </summary>
        /// <param name="dc">Контекст базы данных</param>
        /// <param name="date">Дата курса</param>
        /// <param name="rateFrom">Валюта, из которой конвертируем</param>
        /// <param name="rateTo">Валюта, в которую конвертируем</param>
        /// <returns></returns>
        public static decimal GetRateRealCourse(this MtSearchDbDataContext dc, DateTime date, int rateFrom, int rateTo)
        {
            if (rateFrom == rateTo)
            {
                return(1);
            }

            var hash = String.Format("{0}_{1}_{2}_{3}", MethodBase.GetCurrentMethod().Name, date.ToString("dd.MM.yyyy"), rateFrom, rateTo);

            if (CacheHelper.IsCacheKeyExists(hash))
            {
                return(CacheHelper.GetCacheItem <decimal>(hash));
            }

            var realCourses = dc.GetActualRealCourses();

            var result = (from rc in realCourses
                          where date >= rc.DateFrom &&
                          date <= rc.DateTo &&
                          rc.RateKeyFrom == rateFrom &&
                          rc.RateKeyTo == rateTo
                          select rc.Course)
                         .FirstOrDefault();

            if (result == 0)
            {
                result = (from rc in realCourses
                          where date >= rc.DateFrom &&
                          date <= rc.DateTo &&
                          rc.RateKeyFrom == rateTo &&
                          rc.RateKeyTo == rateFrom
                          select rc.Course)
                         .FirstOrDefault();

                if (result != 0)
                {
                    result = 1 / result;
                }
            }

            if (result == 0)
            {
                throw new ApplicationException(MethodBase.GetCurrentMethod().Name + ". Отсутствует реальный курс на дату " + date.ToString("dd.MM.yyyy"));
            }

            CacheHelper.AddCacheData(hash, result, new List <string>()
            {
                TableName
            }, Globals.Settings.Cache.LongCacheTimeout);

            return(result);
        }