private static bool HasMatchInList( DbPropertyExpression expr, IList <DbPropertyExpression> list, string exprBindingVariableName, string listExpressionsBindingVariableName) { for (int index = 0; index < list.Count; ++index) { if (Sql8ExpressionRewriter.AreMatching(expr, list[index], exprBindingVariableName, listExpressionsBindingVariableName)) { list.RemoveAt(index); return(true); } } return(false); }
private static bool AreMatching( DbPropertyExpression expr1, DbPropertyExpression expr2, string expr1BindingVariableName, string expr2BindingVariableName) { if (expr1.Property.Name != expr2.Property.Name || expr1.Instance.ExpressionKind != expr2.Instance.ExpressionKind) { return(false); } if (expr1.Instance.ExpressionKind == DbExpressionKind.Property) { return(Sql8ExpressionRewriter.AreMatching((DbPropertyExpression)expr1.Instance, (DbPropertyExpression)expr2.Instance, expr1BindingVariableName, expr2BindingVariableName)); } DbVariableReferenceExpression instance1 = (DbVariableReferenceExpression)expr1.Instance; DbVariableReferenceExpression instance2 = (DbVariableReferenceExpression)expr2.Instance; if (string.Equals(instance1.VariableName, expr1BindingVariableName, StringComparison.Ordinal)) { return(string.Equals(instance2.VariableName, expr2BindingVariableName, StringComparison.Ordinal)); } return(false); }