public override IList <IEnumerator <KeyValuePair <long, T> > > GetOrderablePartitions(int partitionCount) { var list = new List <IEnumerator <KeyValuePair <long, T> > >(partitionCount); var source = Progressor <T> .CreateFromIEnumerable(_source); for (var index = 0; index < partitionCount; index++) { list.Add(Enumerator(index)); } return(list.AsReadOnly()); IEnumerator <KeyValuePair <long, T> > Enumerator(int index) { var subIndex = 0; foreach (var item in source) { yield return(new KeyValuePair <long, T>(NumericHelper.BuildInt64(index, subIndex), item)); subIndex++; } } }
public override IList <IEnumerator <KeyValuePair <long, T> > > GetOrderablePartitions(int partitionCount) { var list = new List <IEnumerator <KeyValuePair <long, T> > >(partitionCount); var source = GetDynamicPartitions(); for (int index = 0; index < partitionCount; index++) { list.Add(Enumerator(index)); } return(list.AsReadOnly()); IEnumerator <KeyValuePair <long, T> > Enumerator(int index) { int subIndex = 0; // ReSharper disable once PossibleMultipleEnumeration foreach (var item in source) { yield return(new KeyValuePair <long, T>(NumericHelper.BuildInt64(index, subIndex), item)); subIndex++; } } }