예제 #1
0
        /// <summary>
        /// <paramref name="expr"/>에 해당하는 속성이 상하한 값(lo,hi) 구간 안에 있는 값인지 판단하는 질의를 빌드합니다.
        /// </summary>
        /// <typeparam name="T">엔티티 수형</typeparam>
        /// <param name="expr">속성을 나타내는 람다 식</param>
        /// <param name="lo">하한 값</param>
        /// <param name="hi">상한 값</param>
        /// <returns></returns>
        public static ICriterion IsBetweenCriterion <T>(this Expression <Func <T, object> > expr, object lo, object hi)
        {
            expr.ShouldNotBeNull("expr");
            var propertyName = RetrievePropertyName(expr);

            return(CriteriaTool.IsBetweenCriterion(propertyName, lo, hi));
        }
예제 #2
0
        /// <summary>
        /// <paramref name="value"/> 가 상하한 값 구간 안에 있는 값인지 판단하는 질의를 빌드합니다.
        /// </summary>
        /// <typeparam name="T">엔티티 수형</typeparam>
        /// <param name="value">검사할 값</param>
        /// <param name="loExpr">하한 값을 나타내는 람다 식</param>
        /// <param name="hiExpr">상한 값을 나타내는 람다 식</param>
        /// <returns></returns>
        public static ICriterion IsInRangeCriterion <T>(this object value, Expression <Func <T, object> > loExpr,
                                                        Expression <Func <T, object> > hiExpr)
        {
            value.ShouldNotBeNull("value");

            var loPropertyName = RetrievePropertyName(loExpr);
            var hiPropertyName = RetrievePropertyName(hiExpr);

            return(CriteriaTool.IsInRangeCriterion(value, loPropertyName, hiPropertyName));
        }
예제 #3
0
        /// <summary>
        /// 주어진 기간이 오버랩되는지를 파악하는 질의어를 빌드합니다. (모든 구간은 폐쇄구간일 필요는 없고, 개방 구간이라도 상관없습니다.
        /// </summary>
        /// <typeparam name="T">엔티티 수형</typeparam>
        /// <param name="period">검사할 시간 구간</param>
        /// <param name="loExpr">하한값을 나타내는 속성</param>
        /// <param name="hiExpr">상한값을 나타내는 속성</param>
        /// <returns></returns>
        public static ICriterion IsOverlapCriterion <T>(this ITimePeriod period, Expression <Func <T, object> > loExpr,
                                                        Expression <Func <T, object> > hiExpr)
        {
            period.ShouldNotBeNull("period");
            Guard.Assert(period.IsAnytime == false, @"기간이 설정되어 있지 않습니다. 상하한 값 모두 없으므로, 질의어를 만들 필요가 없습니다.");

            var loPropertyName = RetrievePropertyName(loExpr);
            var hiPropertyName = RetrievePropertyName(hiExpr);

            return(CriteriaTool.IsOverlapCriterion(period, loPropertyName, hiPropertyName));
        }