ResultCell[] GetResultCells(ReportElement[] elements, ResultCell[] row, ResultCell[] col) { ResultCell[] result = new ResultCell[elements.Length]; for (int i = 0; i < elements.Length; i++) { ResultCell val = row.FirstOrDefault(v => v.Element == elements[i]); if (val == null) val = col.FirstOrDefault(v => v.Element == elements[i]); result[i] = new ResultCell() { Element = elements[i], Value = val.Value }; } return result.ToArray(); }
public static int CompareCells(ResultCell[] a, ResultCell[] b) { if (a.Length == 0 || a.Length != b.Length) return 0; ReportModel model = a[0].Element.Model; foreach (ReportElement element in model.Elements.OrderBy(i => i.FinalSortOrder)) { ResultCell aCell = a.FirstOrDefault(i => i.Element == element); ResultCell bCell = b.FirstOrDefault(i => i.Element == element); if (aCell != null && bCell != null) { int result = CompareCell(aCell, bCell); if (result != 0) return (element.SortOrder.Contains(SortOrderConverter.kAscendantSortKeyword) ? 1 : -1) * result; } } return 0; }