public static List <double> GetEvaluationValue(this IElementM elementM, EnvironmentalProductDeclarationField field, List <LifeCycleAssessmentPhases> phases, QuantityType type, bool exactMatch = false)
        {
            if (elementM == null)
            {
                return(new List <double>());
            }

            List <double> quantityTypeValue = elementM.GetQuantityTypeValue(type);

            List <double> epdVal = elementM.IMaterialComposition().Materials.Select(x =>
            {
                var epd = x.Properties.Where(y => y is EnvironmentalProductDeclaration).FirstOrDefault() as EnvironmentalProductDeclaration;

                if (epd.QuantityType == type && (epd.EnvironmentalMetric.Where(z => z.Phases.Where(a => phases.Contains(a)).Count() != 0).FirstOrDefault() != null))
                {
                    return(GetEvaluationValue(epd, field, phases, exactMatch));
                }
                else
                {
                    return(double.NaN);
                }
            }).ToList();

            //Division of GWP constant by QTV
            List <double> normalisedEpdVal = new List <double>();

            for (int x = 0; x < epdVal.Count; x++)
            {
                if (double.IsNaN(epdVal[x]))
                {
                    normalisedEpdVal.Add(double.NaN);
                }
                else
                {
                    normalisedEpdVal.Add(epdVal[x] / quantityTypeValue[x]);
                }
            }

            return(normalisedEpdVal);
        }
        public static List <double> GetEvaluationValue(this IElementM elementM, EnvironmentalProductDeclarationField field, QuantityType type)
        {
            if (elementM == null)
            {
                return(new List <double>());
            }

            List <double> quantityTypeValue = elementM.GetQuantityTypeValue(type);

            List <double> epdVal = elementM.IMaterialComposition().Materials.Select(x =>
            {
                var epd = x.Properties.Where(y => y is IEnvironmentalProductDeclarationData).FirstOrDefault() as IEnvironmentalProductDeclarationData;
                if (epd.QuantityType == type)
                {
                    return(GetEvaluationValue(epd, field));
                }
                else
                {
                    return(double.NaN);
                }
            }).ToList();

            //Division of GWP constant by QTV
            List <double> normalisedEpdVal = new List <double>();

            for (int x = 0; x < epdVal.Count; x++)
            {
                if (double.IsNaN(epdVal[x]))
                {
                    normalisedEpdVal.Add(double.NaN);
                }
                else
                {
                    normalisedEpdVal.Add(epdVal[x] / quantityTypeValue[x]);
                }
            }

            return(normalisedEpdVal);
        }