public bool MoveNext() { if (UniqueSecondItems.IsDefaultValue()) { Container.Initialize(); UniqueSecondItems.Initialize(); while (SecondInner.MoveNext()) { UniqueSecondItems.Add(SecondInner.Current, ref Container); } AlreadyYielded.Initialize(); } while (FirstInner.MoveNext()) { var cur = FirstInner.Current; int existingValueIndex; if (UniqueSecondItems.Contains(cur, ref Container, out existingValueIndex)) { if (AlreadyYielded.AddByIndex(existingValueIndex, ref Container)) { Current = cur; return(true); } } } return(false); }
public bool MoveNext() { if (PreviouslyYielded.IsDefaultValue()) { PreviouslyYielded.Initialize(); Container.Initialize(); } while (Inner.MoveNext()) { var cur = Inner.Current; if (PreviouslyYielded.Add(cur, ref Container)) { Current = cur; return(true); } } return(false); }
public bool MoveNext() { if (AlreadyYielded.IsDefaultValue()) { AlreadyYielded.Initialize(); Container.Initialize(); } if (!FirstFinished) { while (FirstInner.MoveNext()) { var cur = FirstInner.Current; if (AlreadyYielded.Add(cur, ref Container)) { Current = cur; return(true); } } FirstFinished = true; } while (SecondInner.MoveNext()) { var cur = SecondInner.Current; if (AlreadyYielded.Add(cur, ref Container)) { Current = cur; return(true); } } return(false); }
public bool MoveNext() { if (AlreadyYielded.IsDefaultValue()) { AlreadyYielded.Initialize(); Container.Initialize(); while (SecondInner.MoveNext()) { AlreadyYielded.Add(SecondInner.Current, ref Container, Comparer); } } while (FirstInner.MoveNext()) { var cur = FirstInner.Current; if (AlreadyYielded.Add(cur, ref Container, Comparer)) { Current = cur; return(true); } } return(false); }