private IEnumerable <TEnum> GetEnumerable() { return(Enumerable.Concat( ReorderedValues, TypicalValues.Where(v => !ReorderedValues.Contains(v)) )); }
public int Compare(TEnum x, TEnum y) { var xIndex = ReorderedValues.IndexOf(x); var yIndex = ReorderedValues.IndexOf(y); // no such enums in our order list: // so this enum values must be in the end // and must be ordered between themselves by default if (xIndex == -1) { if (yIndex == -1) { xIndex = TypicalValues.IndexOf(x); yIndex = TypicalValues.IndexOf(y); return(xIndex.CompareTo(yIndex)); } return(-1); } if (yIndex == -1) { return(-1); // } return(xIndex.CompareTo(yIndex)); }