namespace Invercargill { private class SkipQuery : BaseQuery { private int n_items {get; set;} public SkipQuery(Enumerable input, int skip) { this.input = input; n_items = skip; } public override bool iterate_if (Invercargill.PredicateDelegate handler) { var c = 0; return input.iterate_if(i => { if(c >= n_items) { c++; return handler(i); } c++; return true; }); } public override Tracker get_tracker() { var tracker = input.get_tracker(); var c = 0; return new AdvanceTracker((out obj) => { obj = null; while(c < n_items) { if(!tracker.has_next()) { return false; } tracker.get_next (); c++; } if(tracker.has_next()) { obj = tracker.get_next(); return true; } return false; }); } } }