/// <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); }
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); }
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); }