internal static bool TryMatchPropertyEqualsValue( DbExpression expression, string propertyVariable, out DbPropertyExpression property, out object value) { property = (DbPropertyExpression)null; value = (object)null; if (expression.ExpressionKind != DbExpressionKind.Equals) { return(false); } DbBinaryExpression binaryExpression = (DbBinaryExpression)expression; if (binaryExpression.Left.ExpressionKind != DbExpressionKind.Property) { return(false); } property = (DbPropertyExpression)binaryExpression.Left; return(ViewSimplifier.TryMatchConstant(binaryExpression.Right, out value) && property.Instance.ExpressionKind == DbExpressionKind.VariableReference && !(((DbVariableReferenceExpression)property.Instance).VariableName != propertyVariable)); }
private static bool TryMatchConstant(DbExpression expression, out object value) { if (expression.ExpressionKind == DbExpressionKind.Constant) { value = ((DbConstantExpression)expression).Value; return(true); } if (expression.ExpressionKind == DbExpressionKind.Cast && expression.ResultType.EdmType.BuiltInTypeKind == BuiltInTypeKind.PrimitiveType && ViewSimplifier.TryMatchConstant(((DbUnaryExpression)expression).Argument, out value)) { PrimitiveType edmType = (PrimitiveType)expression.ResultType.EdmType; value = Convert.ChangeType(value, edmType.ClrEquivalentType, (IFormatProvider)CultureInfo.InvariantCulture); return(true); } value = (object)null; return(false); }