コード例 #1
0
        /// <summary>
        /// Возвращает количество энергии, заданной свойством <see cref="Energy"/>,
        /// указанного направления, для дочерних элментов группы, указанного типа
        /// </summary>
        /// <param name="elementType">Тип дочерних элементов</param>
        /// <param name="energyDirection">Направление энергии</param>
        /// <returns>Количество энергии</returns>
        private double?GetBalanceItemsEnergyValue(ElementTypes elementType, BalanceFormula.EnergyDirection energyDirection)
        {
            double?result = new Nullable <double>(0);

            if (BalanceGroup.HasChildren)
            {
                var items = BalanceGroup.Children.Where(i => i.ElementType == elementType);
                foreach (IBalanceItem item in items)
                {
                    IEnergy energy;
                    if (item.ActiveEnergy.Parameter == Energy.Parameter)
                    {
                        energy = item.ActiveEnergy;
                    }
                    else
                    {
                        energy = item.ReactiveEnergy;
                    }

                    var value = energyDirection == BalanceFormula.EnergyDirection.@in ? energy.Plus.CorrectedValue : energy.Minus.CorrectedValue;
                    if (value.HasValue)
                    {
                        result += value;
                    }
                }
            }
            else
            {
                return(null);
            }
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Возвращает значение энергии элемента
        /// </summary>
        /// <param name="BalanceItem">Элемент баланса</param>
        /// <param name="energyDirection">Направление энергии</param>
        /// <returns>Значение энергии</returns>
        private double?GetEnergyValueForBalanceItem(IBalanceItem BalanceItem, BalanceFormula.EnergyDirection energyDirection)
        {
            IEnergy energy = _BalanceItemsEnergy[BalanceItem];
            var     value  = energyDirection == BalanceFormula.EnergyDirection.@in
                ? energy.Plus.CorrectedValue
                : energy.Minus.CorrectedValue;

            return(value);
        }
コード例 #3
0
        /// <summary>
        /// Возвращает сумму значений указанной энергии за указанные сутки всех элементов указанного типа
        /// </summary>
        /// <param name="dayIndex">Индекс суток</param>
        /// <param name="listOfElementAndEnergy">Список пар элемент-энергия</param>
        /// <param name="energyDirection">Направление энергии</param>
        /// <returns>Сумма энергии элементов за сутки</returns>
        private double?GetBalanceItemDayEnergyValue(int dayIndex, IList <KeyValuePair <IBalanceItem, IEnergy> > listOfElementAndEnergy, BalanceFormula.EnergyDirection energyDirection)
        {
            double?result = new Nullable <double>(0);

            foreach (var item in listOfElementAndEnergy)
            {
                var value = energyDirection == BalanceFormula.EnergyDirection.@in ? item.Value.Plus.DaysValues[dayIndex] : item.Value.Minus.DaysValues[dayIndex];
                if (value.HasValue)
                {
                    result += value;
                }
            }
            return(result);
        }