public static Report Convert(DataRowCollection dataRowCollection, Report report) { if (dataRowCollection == null || report == null) return null; var dataSet = new Data.DataSet(); foreach (DataRow dataRow in dataRowCollection) { var fields = new Fields(); foreach (object o in dataRow.ItemArray) fields.AddData(!o.Equals(DBNull.Value) ? new Field(o) : new Field("N/A")); dataSet.Fieldss.AddData(fields); } report.DataSets.AddData(dataSet); return report; }
public static Report Convert(DataRowCollection dataRowCollection, Report report, String columnNameGroup) { if (dataRowCollection == null || report == null || columnNameGroup == null) return null; var dataSet = new Data.DataSet(); var columnValues = new List<Object>(); foreach (object columnValue in dataRowCollection.Cast<DataRow>() .Select(dataRow => dataRow[columnNameGroup]) .Where(columnValue => !columnValues.Contains(columnValue))) columnValues.Add(columnValue); foreach (object columnValue in columnValues) { var sums = new List<Double>(); for (int index = 0; index < dataRowCollection[0].ItemArray.Count(); index++) sums.Add(0d); foreach (DataRow dataRow in dataRowCollection) { if (dataRow[columnNameGroup] != columnValue) continue; var fields = new Fields(); int index = 0; foreach (object o in dataRow.ItemArray) { fields.AddData(!o.Equals(DBNull.Value) ? new Field(o) : new Field("N/A")); if (o is Decimal) sums[index] += Decimal.ToDouble((Decimal) o); else if (o is Int32) sums[index] += (Int32) o; index++; } dataSet.Fieldss.AddData(fields); } var sumFields = new Fields(); foreach (double sum in sums) sumFields.AddData(new Field(sum)); dataSet.Fieldss.AddData(sumFields); } report.DataSets.AddData(dataSet); return report; }