protected ComparerResult CompareDecimals(NumericInterval interval, decimal actual) { if (interval.Contains(actual)) { return(ComparerResult.Equality); } return(new ComparerResult(interval.ToString())); }
public static IEnumerable <NumericInterval <T> > Intervals <T>(this IEnumerable <T> source) { NumericInterval <T> bucket = null; dynamic current = 0; foreach (var item in source) { if (bucket == null) { bucket = new NumericInterval <T>(); bucket.min = item; current = item; } else { if (current + 1 == (dynamic)item) { ++current; continue; } else { // end of interval bucket.max = (T)current; // interval is done yield return(bucket); // current item goes in new bucket bucket = new NumericInterval <T>(); bucket.min = item; current = item; } } } if (bucket != null) { bucket.max = (T)current; yield return(bucket); } }