public IEnumerable<IndexNode> FindAll(CollectionIndex index, int order) { var cur = this.GetNode(order == Query.Ascending ? index.HeadNode : index.TailNode); while (!cur.NextPrev(0, order).IsEmpty) { cur = this.GetNode(cur.NextPrev(0, order)); // stop if node is head/tail if (cur.IsHeadTail(index)) yield break; yield return cur; } }
/// <summary> /// Returns if this node is header or tail from collection Index /// </summary> public bool IsHeadTail(CollectionIndex index) { return(this.Position.Equals(index.HeadNode) || this.Position.Equals(index.TailNode)); }