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)));
 }