コード例 #1
0
        /// <summary>
        ///     normalise energiemenge-&gt;energieverbrauch consumption values to a given <paramref name="target" /> value
        /// </summary>
        /// <param name="em">Energiemenge</param>
        /// <param name="target">normalising constant (1.0 by default)</param>
        /// <returns>new Energiemenge object with normalised consumption values</returns>
        public static BO.Energiemenge Normalise(this BO.Energiemenge em, decimal target = 1.0M)
        {
            using (MiniProfiler.Current.Step(nameof(Normalise)))
            {
                BO.Energiemenge result;
                decimal         scalingFactor;
                Tuple <decimal, Mengeneinheit> totalConsumption;
                using (MiniProfiler.Current.Step("Calculating total consumption and normalisation factor."))
                {
                    totalConsumption = em.GetTotalConsumption();
                    result           = em.DeepClone();
                    if (totalConsumption.Item1 != 0.0M)
                    {
                        scalingFactor = target / totalConsumption.Item1;
                    }
                    else
                    {
                        scalingFactor = 0.0M;
                    }
                }

                using (MiniProfiler.Current.Step("Parallelised normalising of all values."))
                {
                    Parallel.ForEach(result.Energieverbrauch.Where(v => v.Einheit == totalConsumption.Item2),
                                     v => { v.Wert = scalingFactor * v.Wert; });
                }

                return(result);
            }
        }
コード例 #2
0
 public static List <BO.Energiemenge> SplitInPureGroups(this BO.Energiemenge em)
 {
     if (em.Energieverbrauch == null)
     {
         return(new List <BO.Energiemenge>()
         {
             em
         });
     }
     else
     {
         var result = new List <BO.Energiemenge>();
         foreach (var group in em.Energieverbrauch.GroupBy(PurityGrouper))
         {
             BO.Energiemenge pureEm = em.DeepClone();
             pureEm.Energieverbrauch = group.ToList();
             result.Add(pureEm);
         }
         return(result);
     }
 }