private void VisitEquals(BinaryExpression expression) { var constantExpression = expression.Right as ConstantExpression; if (constantExpression != null && true.Equals(constantExpression.Value)) { VisitExpression(expression.Left); return; } if (constantExpression != null && false.Equals(constantExpression.Value)) { luceneQuery.OpenSubclause(); luceneQuery.Where("*:*"); luceneQuery.NegateNext(); VisitExpression(expression.Left); luceneQuery.CloseSubclause(); return; } var methodCallExpression = expression.Left as MethodCallExpression; // checking for VB.NET string equality if (methodCallExpression != null && methodCallExpression.Method.Name == "CompareString" && expression.Right.NodeType == ExpressionType.Constant && Equals(((ConstantExpression)expression.Right).Value, 0)) { var expressionMemberInfo = GetMember(methodCallExpression.Arguments[0]); luceneQuery.WhereEquals( new WhereParams { FieldName = expressionMemberInfo.Path, Value = GetValueFromExpression(methodCallExpression.Arguments[1], GetMemberType(expressionMemberInfo)), IsAnalyzed = true, AllowWildcards = false }); return; } if (IsMemberAccessForQuerySource(expression.Left) == false && IsMemberAccessForQuerySource(expression.Right)) { VisitEquals(Expression.Equal(expression.Right, expression.Left)); return; } var memberInfo = GetMember(expression.Left); luceneQuery.WhereEquals(new WhereParams { FieldName = memberInfo.Path, Value = GetValueFromExpression(expression.Right, GetMemberType(memberInfo)), IsAnalyzed = true, AllowWildcards = false, IsNestedPath = memberInfo.IsNestedPath }); }
/// <inheritdoc /> public IFilterFactory <T> Equals(string fieldName, MethodCall value) { _documentQuery.WhereEquals(fieldName, value); return(this); }