Contains on projected collection of strings returns incorrect results

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Unknown
    • 10.0.3, 9.1.3, 8.4.3
    • Affects Version/s: None
    • Component/s: None
    • None
    • None
    • 0.25
    • Dotnet Drivers
    • Not Needed
    • None
    • None
    • None
    • None
    • None
    • None

      For example:

      context.Set<Order>().Select(e => e.Foo).Contains("DEF");
      

      This returns false even when there is a Foo set to "DEF".

      Repro:

      using var context = new SomeDbContext();
      context.Database.EnsureDeleted();
      
      context.AddRange(new Order { Id = 1, Foo = "ABC" }, new Order { Id = 2, Foo = "DEF" });
      context.SaveChanges();
      
      var value = context.Set<Order>().Select(e => e.Foo).Contains("DEF");
      Console.WriteLine(value);
      
      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; }
      }
      

            Assignee:
            Arthur Vickers
            Reporter:
            Arthur Vickers
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: