-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Unknown
-
None
-
Affects Version/s: None
-
None
-
None
-
Dotnet Drivers
-
None
-
None
-
None
-
None
-
None
-
None
This works:
context.Set<Order>().Where(o => Regex.IsMatch(o.Foo, "X"))
This throws:
context.Set<Order>().Where(o => Regex.IsMatch(o.Foo, o.Bar))
Unhandled exception. MongoDB.Driver.Linq.ExpressionNotSupportedException: Expression not supported: IsMatch(o.Foo, o.Bar). at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MethodTranslators.IsMatchMethodToAggregationExpressionTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MethodCallExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.ExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ExpressionToFilterTranslator.TranslateUsingAggregationOperators(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ExpressionToFilterTranslator.Translate(TranslationContext context, Expression expression, Boolean exprOk) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToFilterTranslators.ExpressionToFilterTranslator.TranslateLambda(TranslationContext context, LambdaExpression lambdaExpression, IBsonSerializer parameterSerializer, Boolean asRoot) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.WhereMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.ExpressionToPipelineTranslator.Translate(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.AsMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.ExpressionToPipelineTranslator.Translate(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExpressionToExecutableQueryTranslator.Translate[TDocument,TOutput](MongoQueryProvider`1 provider, Expression expression, ExpressionTranslationOptions translationOptions) at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.Execute() at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.GetEnumerator() at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNextHelper() at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Program.<Main>$(String[] args) in /Users/arthur.vickers/code/OnYourOwnNow/OnYourOwnNow/Program.cs:line 12
Repro:
using var context = new SomeDbContext(); context.Database.EnsureDeleted(); context.AddRange(new Order { Id = 1, Foo = "X", Bar = "X" }, new Order { Id = 2, Foo = "Y", Bar = "Y" }); context.SaveChanges(); var value = context.Set<Order>().Where(o => Regex.IsMatch(o.Foo, o.Bar)).ToList(); Console.WriteLine(value.Count); public class SomeDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseMongoDB("mongodb://localhost:27017", "SomeDb3") .LogTo(Console.WriteLine, LogLevel.Information); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Order>(); } } public class Order { public int Id { get; set; } public string Foo { get; set; } public string Bar { get; set; } }
- is blocked by
-
CSHARP-5684 Translation of Regex.IsMatch fails if the pattern is not a constant
-
- Backlog
-
- is related to
-
CSHARP-4698 Expression not supported: Regex.IsMatch
-
- Closed
-