Implement Invoke() to allow for dynamic predicate creation.

XMLWordPrintableJSON

    • Type: New Feature
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Affects Version/s: None
    • Component/s: LINQ3
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Using the PredicateBuilder class as discussed here:
      http://www.albahari.com/nutshell/predicatebuilder.aspx

      When using the expression built by PredicateBuilder, which in this case is of type 

      Expression<Func<Product, bool>>

      to .Find() or to AsQueryable().Where():

      I get the error

      System.ArgumentException: Unsupported filter: Invoke(product => (product.FriendlyName.ToUpperInvariant() == "GOLF COURSES"), \{document}).
       at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
       at MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateAndAlso(BinaryExpression node)
       at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
       at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.TranslateWhere(WhereExpression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.Translate(Expression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.TranslateTake(TakeExpression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.Translate(Expression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.TranslatePipeline(PipelineExpression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.Translate(Expression node)
       at MongoDB.Driver.Linq.Translators.QueryableTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions)
       at MongoDB.Driver.Linq.MongoQueryProviderImpl`1.Translate(Expression expression)
       at MongoDB.Driver.Linq.MongoQueryProviderImpl`1.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
       at MongoDB.Driver.Linq.MongoQueryable.FirstOrDefaultAsync[TSource](IMongoQueryable`1 source, CancellationToken cancellationToken)
      

      I am attempting to implement dynamic, nested OR predicates as mentioned in that article.

            Assignee:
            Unassigned
            Reporter:
            Richard Collette
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: