#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member 'BomDataTable.AddRowCollection(BomDataRowCollection)' public void AddRowCollection(BomDataRowCollection rowCollection) { #pragma warning restore CS1591 // Missing XML comment for publicly visible type or member 'BomDataTable.AddRowCollection(BomDataRowCollection)' foreach (BomDataRowHolder row in rowCollection) { AddRow(row); } }
public BomDataRowCollection ExpandRow() { BomDataRowCollection rowCollection = new BomDataRowCollection(); Collection <BomDataColumn> quantityColumnCollection = new Collection <BomDataColumn>(); int rowsAdded = 0; foreach (BomDataCell cell in this) { if (cell.Column.IsSplit) { string[] values; if (cell.Value == null) { values = new string[] { "" }; } else if (cell.Column.Delimeter.Length != 0) { Regex test = new Regex(cell.Column.Delimeter); values = test.Split(cell.Value.ToString()); // cell.Value.ToString().Split(new[] { cell.Column.Delimeter }, StringSplitOptions.None); } else if (cell.Column.SplitInto != -1) { values = new string[cell.Column.SplitInto]; string cellVal = cell.Value.ToString(); int splitIntoLen = cellVal.Length / cell.Column.SplitInto; for (int i = 0; i < cell.Column.SplitInto; i++) { values[i] = cellVal.Substring(i * splitIntoLen, splitIntoLen); } } else { values = new string[] { "" }; } rowsAdded += values.Length; foreach (string value in values) { rowCollection.Add(new BomDataRowHolder(cell.Row, cell.Column, value)); } } if (cell.Column.IsQuantity) { quantityColumnCollection.Add(cell.Column); } } if (rowsAdded == 0) { rowCollection.Add(this); rowsAdded++; } if (quantityColumnCollection.Count > 0) { foreach (BomDataColumn column in quantityColumnCollection) { foreach (BomDataRowHolder row in rowCollection) { if (row[column].Value != null && double.TryParse(row[column].Value.ToString(), out double valueToDouble)) { row[column].Value = valueToDouble / rowsAdded; } else { row[column].Value = 0; } } } } return(rowCollection); }