private static void LinkedDispose(ref GroupByContext <K, T> context, out Option <Grouping <K, T> > next) { next = new Option <Grouping <K, T> >(); context.bd.Release(); if (context.release) { context.lookup.DisposeInBackground(); } }
private static void LinkedSkip(ref GroupByContext <K, T> context, out Option <Grouping <K, T> > next) { context.bd.DetectBacktrack(); if (context.runner == null) { next = new Option <Grouping <K, T> >(); context.bd.Release(); if (context.release) { context.lookup.DisposeInBackground(); } } else { next = new Option <Grouping <K, T> >( new Grouping <K, T>(context.runner.value, context.release ? context.lookup.RemoveValues(context.runner.value) : context.lookup.GetValues(context.runner.value))); context.runner = context.runner.next; } }
private static void LinkedRemove(ref GroupByContext <K, T> context, out Option <Grouping <K, T> > next) { throw new NotSupportedException(); }