Is there BETWEEN DateTime in C# just like SQL does?

前端 未结 9 1209
悲&欢浪女
悲&欢浪女 2021-01-01 09:13

Is there between DateTime in C# ? I know I can do simple check with if (a > date1 && a < date2) but I was trying to find Between meth

9条回答
  •  梦谈多话
    2021-01-01 09:48

    Building on @richardschneider answer, my solution adds a boundary range type as a parameter.

    public enum RangeBoundaryType
    {
        [Description("Exclusive")]
        Exclusive,
    
        [Description("Inclusive on both boundaries")]
        Inclusive,
    
        [Description("Inclusive on only the lower boundary")]
        InclusiveLowerBoundaryOnly,
    
        [Description("Inclusive on only the upper boundary")]
        InclusiveUpperBoundaryOnly
    }
    
    public static bool Between(this IComparable value, IComparable comparator0, IComparable comparator1, RangeBoundaryType rangeBoundary)
    {
        switch (rangeBoundary)
        {
            case RangeBoundaryType.Exclusive:
                return (value.CompareTo(comparator0) > 0 && value.CompareTo(comparator1) < 0);
    
            case RangeBoundaryType.Inclusive:
                return (value.CompareTo(comparator0) >= 0 && value.CompareTo(comparator1) <= 0);
    
            case RangeBoundaryType.InclusiveLowerBoundaryOnly:
                return (value.CompareTo(comparator0) >= 0 && value.CompareTo(comparator1) < 0);
    
            case RangeBoundaryType.InclusiveUpperBoundaryOnly:
                return (value.CompareTo(comparator0) > 0 && value.CompareTo(comparator1) <= 0);
    
            default:
                return false;
        }
    }
    

提交回复
热议问题