namespace Invercargill { private class TakeQuery : BaseQuery { private int n_items {get; set;} public TakeQuery(Enumerable input, int count) { this.input = input; n_items = count; } // public override bool iterate_if (Invercargill.PredicateDelegate handler) { // var c = 0; // return input.iterate_if(i => { // if(c < n_items) { // c++; // return handler(i); // } // return false; // }); // } public override Tracker to_tracker() { var tracker = input.to_tracker(); var c = 0; return new LambdaTracker( () => { if(c < n_items) { return tracker.has_next(); } return false; }, () => { c++; return tracker.get_next(); } ); } } }