protected override bool InternalNext() { bool found = false; while (_sourceTable.Next()) { var currentRow = new Row(Manager, Node.DataType.RowType); try { _sourceTable.Select(currentRow); if (!_map.HasRow(Manager, currentRow)) { _map.Insert(Manager, currentRow); currentRow.ValuesOwned = false; found = true; break; } } finally { currentRow.Dispose(); } } return(found); }
protected void PopulateTable() { using (ITable table = (ITable)Node.Nodes[0].Execute(Program)) { Row row = new Row(Manager, DataType.RowType); try { while (table.Next()) { table.Select(row); if (!_map.HasRow(Manager, row)) { _map.Insert(Manager, row); // no validation is required because FTable will never be changed } row.ClearValues(); Program.CheckAborted(); // Yield } } finally { row.Dispose(); } } }