private static ValuePair CalculateMatches(IIndexedSet <T> set, IEnumerable <T> other, int count) { int num = 0; int num2 = 0; if (count > 0) { BitArray flags = new BitArray(count); foreach (T item in other) { int index = set.IndexOf(item); if (index >= 0) { if (!flags[index]) { flags[index] = true; num++; } } else { num2++; } } } else if (other.Any()) { num2++; } return(new ValuePair { overlapCount = num, exceptCount = num2, }); }
private static ValuePair CalculateExcept(IIndexedSet <T> set, IEnumerable <T> other, int count) { int num = 0; int num2 = 0; if (count > 0) { BitArray flags = new BitArray(count); using (IEnumerator <T> enumerator = other.GetEnumerator()) { while ((enumerator.MoveNext()) && (num2 == 0)) { T item = enumerator.Current; int index = set.IndexOf(item); if (index >= 0) { if (!flags[index]) { flags[index] = true; num++; } } else { num2++; } } } } else if (other.Any()) { num2++; } return(new ValuePair { overlapCount = num, exceptCount = num2, }); }