Beispiel #1
0
        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));
        }
Beispiel #2
0
 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);
 }