Exemplo n.º 1
0
        /// <summary>
        /// The Result.
        /// </summary>
        /// <param name="figures">The figures<see cref="IFigures"/>.</param>
        /// <param name="onlyView">The onlyView<see cref="bool"/>.</param>
        /// <returns>The <see cref="IFigure"/>.</returns>
        private static IFigure Result(IFigures figures, bool onlyView = true)
        {
            IRubrics summaryRubrics = figures.Treatment.SummaryRubrics;

            if (summaryRubrics.Count > 0)
            {
                object[] result = summaryRubrics.AsValues().AsParallel().SelectMany(s =>
                                                                                    new object[]
                {
                    (!string.IsNullOrEmpty(s.RubricName)) ?
                    (s.SummaryOperand == AggregateOperand.Sum) ?
                    Convert.ChangeType(figures

                                       .Sum

                                           (j => (j[s.SummaryOrdinal] is DateTime) ?
                                           ((DateTime)j[s.SummaryOrdinal]).ToOADate() :
                                           Convert.ToDouble(j[s.FieldId])), typeof(object)) :
                    (s.SummaryOperand == AggregateOperand.Min) ?
                    Convert.ChangeType(figures

                                       .Min

                                           (j => (j[s.SummaryOrdinal] is DateTime) ?
                                           ((DateTime)j[s.SummaryOrdinal]).ToOADate() :
                                           Convert.ToDouble(j[s.FieldId])), typeof(object)) :
                    (s.SummaryOperand == AggregateOperand.Max) ?
                    Convert.ChangeType(figures

                                       .Max

                                           (j => (j[s.SummaryOrdinal] is DateTime) ?
                                           ((DateTime)j[s.SummaryOrdinal]).ToOADate() :
                                           Convert.ToDouble(j[s.FieldId])), typeof(object)) :
                    (s.SummaryOperand == AggregateOperand.Avg) ?
                    Convert.ChangeType(figures

                                       .Average

                                           (j => (j[s.SummaryOrdinal] is DateTime) ?
                                           ((DateTime)j[s.SummaryOrdinal]).ToOADate() :
                                           Convert.ToDouble(j[s.FieldId])), typeof(object)) :
                    (s.SummaryOperand == AggregateOperand.Bis) ?
                    Convert.ChangeType(figures.Select(j => (j[s.FieldId] != DBNull.Value) ? j[s.FieldId].ToString() : "")

                                       .Aggregate((x, y) => x + " " + y), typeof(object)) : null : null
                }
                                                                                    ).ToArray();

                figures.Summary.ValueArray = result;

                return(figures.Summary);
            }
            else
            {
                return(null);
            }
        }