예제 #1
0
 /// <summary>
 /// 添加查询表达式
 /// </summary>
 /// <param name="expression">查询表达式</param>
 /// <param name="catchType">连接操作符类型</param>
 /// <returns> 枚举查询器</returns>
 public LEnumerable <T> Where(QueryExpression expression, CatchOperatorsType catchType)
 {
     if (catchType == CatchOperatorsType.AND)
     {
         _query = QueryExpression.And(_query, expression);
     }
     else
     {
         _query = QueryExpression.Or(_query, expression);
     }
     return(this);
 }
예제 #2
0
        private static QueryExpression Catch(QueryExpression expression1, CatchOperatorsType operatorType, QueryExpression expression2)
        {
            if (expression1 == null && expression2 == null)
            {
                return(null);
            }
            else if (expression1 == null && expression2 != null)
            {
                return(expression2);
            }
            else if (expression1 != null && expression2 == null)
            {
                return(expression1);
            }
            //if (expression1.TableMapping != expression2.TableMapping)
            //{
            //    throw new LightDataException(RE.DataMappingOfExpressionIsNotMatch);
            //}
            DataEntityMapping demapping = null;

            //如果expression1不需要检查一致性而expression2需要,则用expression2的查询表
            if (expression1.IgnoreConsistency && !expression2.IgnoreConsistency)
            {
                demapping = expression2.TableMapping;
            }
            else if (!expression1.IgnoreConsistency && expression2.IgnoreConsistency)
            {
                demapping = expression1.TableMapping;
            }
            else if (!expression1.IgnoreConsistency && !expression2.IgnoreConsistency)
            {
                if (expression1.TableMapping.Equals(expression2.TableMapping))
                {
                    demapping = expression1.TableMapping;
                }
                else
                {
                    throw new LightDataException(RE.DataMappingOfExpressionIsNotMatch);
                }
            }
            QueryExpression newExpression = new QueryExpression(demapping);

            newExpression._expression1  = expression1;
            newExpression._expression2  = expression2;
            newExpression._operatorType = operatorType;
            return(newExpression);
        }
예제 #3
0
 public virtual string CreateCatchExpressionSql(string expressionString1, string expressionString2, CatchOperatorsType operatorType)
 {
     return(string.Format("({0} {2} {1})", expressionString1, expressionString2, operatorType.ToString().ToLower()));
 }
        private static AggregateHavingExpression Catch(AggregateHavingExpression expression1, CatchOperatorsType operatorType, AggregateHavingExpression expression2)
        {
            if (expression1 == null && expression2 == null)
            {
                return(null);
            }
            else if (expression1 == null && expression2 != null)
            {
                return(expression2);
            }
            else if (expression1 != null && expression2 == null)
            {
                return(expression1);
            }
            if (expression1.TableMapping != expression2.TableMapping)
            {
                throw new LightDataException(RE.DataMappingOfExpressionIsNotMatch);
            }

            AggregateHavingExpression newExpression = new AggregateHavingExpression(expression1.TableMapping);

            newExpression._expression1  = expression1;
            newExpression._expression2  = expression2;
            newExpression._operatorType = operatorType;
            return(newExpression);
        }