public int CompareTo(VBufferEqSort <T> other) { var enum1 = SparseValues().GetEnumerator(); var enum2 = other.SparseValues().GetEnumerator(); int r; while (true) { if (!enum2.MoveNext()) { return(enum1.MoveNext() ? -1 : 0); } if (!enum1.MoveNext()) { return(1); } if (enum1.Current.Key == enum2.Current.Key) { r = enum1.Current.Value.CompareTo(enum2.Current.Value); if (r != 0) { return(r); } } else { return(enum1.Current.Key > enum2.Current.Key ? -1 : 1); } } }