/// <summary>
        /// Initializes a new instance of the <see cref="AnalysisRow"/> class.
        /// </summary>
        /// <param name="result">Result</param>
        /// <param name="categoryValue">Category value</param>
        public AnalysisRow(AnalysisResult result, AnalysisProcessingYCategoryValue categoryValue)
        {
            var values = new List <object>();
            int i, count = result.Columns.Count;

            for (i = 0; i < count; i++)
            {
                AnalysisProcessingResultColumnValue rcv = categoryValue.ResultColumnValues[i];
                AnalysisResultCell cell = new AnalysisResultCell(rcv, this, result.Columns[i] as AnalysisColumn);
                values.Add(cell);
            }

            this.Key        = categoryValue.Key;
            this.Values     = values;
            this.Label      = categoryValue.Label;
            this.ResultRows = categoryValue.ResultRows;
            this.Result     = result;
            if (categoryValue.Category.SubCategoryName?.Length > 0)
            {
                AnalysisDrilldownOption opt = new AnalysisDrilldownOption(result.Analysis, categoryValue.Category.Category.BaseField(), categoryValue.Category.SubCategoryName);
                if (opt != null)
                {
                    this.AddDrilldownOption(opt);
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AnalysisRow"/> class.
        /// </summary>
        /// <param name="result">Result</param>
        /// <param name="ycategoryValues">Y category values</param>
        public AnalysisRow(AnalysisResult result, List <AnalysisProcessingYCategoryValue> ycategoryValues)
        {
            List <object> resultRows = new List <object>();
            int           i, count = result.Columns.Count;
            var           resultColumnValues = new List <object>();

            for (i = 0; i < count; i++)
            {
                resultColumnValues.Add(new List <object>());
            }

            foreach (AnalysisProcessingYCategoryValue catval in ycategoryValues)
            {
                if (catval.ResultRows.Count > 0)
                {
                    resultRows.AddRange(catval.ResultRows);
                }

                for (i = 0; i < count; i++)
                {
                    var va = resultColumnValues[i] as List <object>;
                    va.Add(catval.ResultColumnValues[i]);
                }
            }

            var values = new List <object>();

            for (i = 0; i < count; i++)
            {
                AnalysisResultCell cell = new AnalysisResultCell(resultColumnValues[i] as AnalysisProcessingResultColumnValue, this, result.Columns[i] as AnalysisColumn);
                values.Add(cell);
            }

            this.Values     = values;
            this.ResultRows = resultRows;
            this.Result     = result;
            this.Label      = LocalizedString.TextAnalysesOther;
        }