public static void DeleteRows(this IMutableTable table, IEnumerable <int> rows) { foreach (var row in rows) { table.RemoveRow(row); } }
public static bool Delete(this IMutableTable table, int columnOffset, DataObject value) { var list = table.SelectRowsEqual(columnOffset, value).ToArray(); if (list.Length == 0) { return(false); } return(table.RemoveRow(list[0])); }
public static int Delete(this IMutableTable table, ITable other, int limit) { List <int> rowSet = new List <int>(other.RowCount); var e = other.GetEnumerator(); while (e.MoveNext()) { rowSet.Add(e.Current.RowId.RowNumber); } // HACKY: Find the first column of this table in the search table. This // will allow us to generate a row set of only the rows in the search // table. int firstColumn = other.IndexOfColumn(table.GetResolvedColumnName(0)); if (firstColumn == -1) { throw new DatabaseSystemException("Search table does not contain any reference to table being deleted from"); } // Generate a row set that is in this tables domain. var rowsToDelete = other.ResolveRows(firstColumn, rowSet, table).ToList(); // row_set may contain duplicate row indices, therefore we must sort so // any duplicates are grouped and therefore easier to find. rowSet.Sort(); // If limit less than zero then limit is whole set. if (limit < 0) { limit = Int32.MaxValue; } // Remove each row in row set in turn. Make sure we don't remove the // same row index twice. int len = System.Math.Min(rowsToDelete.Count, limit); int lastRemoved = -1; int removeCount = 0; for (int i = 0; i < len; ++i) { int toRemove = rowsToDelete[i]; if (toRemove < lastRemoved) { throw new DatabaseSystemException("Internal error: row sorting error or row set not in the range > 0"); } if (toRemove != lastRemoved) { table.RemoveRow(toRemove); lastRemoved = toRemove; ++removeCount; } } if (removeCount > 0) { // Perform a referential integrity check on any changes to the table. table.AssertConstraints(); } return(removeCount); }
public static bool RemoveRow(this IMutableTable table, int rowIndex) { return(table.RemoveRow(new RowId(table.TableInfo.Id, rowIndex))); }