public void TestCombined2() { OrderedSet <Int32> First = OrderedSet.SortArrayAndGetSet(new Int32[] { 0, 1, 3 }); AssertEquals(new Int32[] { 0, 1, 3 }, First.orderedSet); OrderedSet <Int32> Second = First.Combine(OrderedSet.SortArrayAndGetSet(new Int32[] { 0, 2 })); AssertEquals(new Int32[] { 0, 1, 2, 3 }, Second.orderedSet); }
// NOTE: this can probably be made more efficient public static OrderedSet <T> Combine <T>(this IEnumerable <OrderedSet <T> > sets) { IEnumerator <OrderedSet <T> > enumerator = sets.GetEnumerator(); if (!enumerator.MoveNext()) { return(default(OrderedSet <T>)); } OrderedSet <T> combined = enumerator.Current; while (enumerator.MoveNext()) { combined = combined.Combine(enumerator.Current); } return(combined); }