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