Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Query: Contains in AndAlso translates to non-boolean value #4860

Closed
yyjdelete opened this issue Mar 19, 2016 · 5 comments
Closed

Query: Contains in AndAlso translates to non-boolean value #4860

yyjdelete opened this issue Mar 19, 2016 · 5 comments
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. type-bug
Milestone

Comments

@yyjdelete
Copy link

Database: MSSQL
EntityFramework: Microsoft.EntityFrameworkCore:1.0.0-rc2-20261(aspnetcidev)

Query

ctx.DeviceMsgUps
                         .Where(dm => dm.Action == 27
                                   && ctx.UserDeviceMaps
                         .Where(udp => udp.DeviceId != null).Select(udp => udp.DeviceId).Contains(dm.DeviceId))
                         .Count()

Model

    [System.CodeDom.Compiler.GeneratedCodeAttribute("EF.Reverse.POCO.Generator", "2.18.1.0")]
    public class DeviceMsgUp
    {
        public int MessageId { get; set; } // Message_ID (Primary key)
        public int DeviceId { get; set; } // Device_ID
        public byte Format { get; set; } // Format
        public byte Action { get; set; } // Action
        public string Data { get; set; } // Data (length: 1000)
        public System.DateTime? ExpireTime { get; set; } // Expire_Time
        public System.DateTime Update { get; set; } // Update
        public byte ResultStatus { get; set; } // Result_Status
        public string ResultData { get; set; } // Result_Data (length: 1000)
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("EF.Reverse.POCO.Generator", "2.18.1.0")]
    public partial class UserDeviceMap
    {
        public int UdMapId { get; set; } // UDMap_ID (Primary key)
        public int UserId { get; set; } // User_ID
        public int? DeviceId { get; set; } // Device_ID
        public int? StudentId { get; set; } // Student_ID
        public int? ClassId { get; set; } // Class_ID
        public string NickName { get; set; } // Nick_Name (length: 20)
        public string Image { get; set; } // Image (length: 50)
        public bool? Gender { get; set; } // Gender
        public System.DateTime? BirthDate { get; set; } // Birth_Date
        public System.DateTime? BindDate { get; set; } // Bind_Date
        public byte Status { get; set; } // Status
        public int Creator { get; set; } // Creator
        public System.DateTime Upload { get; set; } // Upload
        public int Login { get; set; } // Login
        public System.DateTime Update { get; set; } // Update
        public string CellPhoneNum { get; set; } // CellPhoneNum (length: 11)

        // Reverse navigation
        public virtual System.Collections.Generic.ICollection<UserWalkTarget> UserWalkTargets { get; set; } // Many to many mapping

        // Foreign keys
        public virtual Class Class { get; set; } // FK_User_Device_Map_Class_ID_Class_Class_ID
        public virtual Device Device { get; set; } // FK_User_Device_Map_Device_ID_Device_Device_ID
        public virtual Role Role { get; set; } // FK_User_Device_Map_User_ID_Role_Role_ID
        public virtual Student Student { get; set; } // FK_User_Device_Map_Student_ID_Student_Student_ID

        public UserDeviceMap()
        {
            UserWalkTargets = new System.Collections.Generic.List<UserWalkTarget>();
        }
    }

Error

没有为类型“System.Boolean”和“System.Nullable`1[System.Int32]”定义二进制运算符 AndAlso。
  + System.Linq.Expressions.Expression.AndAlso(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression, System.Reflection.MethodInfo)
  + Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.SqlTranslatingExpressionVisitor.VisitBinary(System.Linq.Expressions.BinaryExpression)
  + System.Linq.Expressions.BinaryExpression.Accept(System.Linq.Expressions.ExpressionVisitor)
  + Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(System.Linq.Expressions.Expression)
  + Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.SqlTranslatingExpressionVisitor.Visit(System.Linq.Expressions.Expression)
  + Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitWhereClause(Remotion.Linq.Clauses.WhereClause, Remotion.Linq.QueryModel, int)
  + Remotion.Linq.Clauses.WhereClause.Accept(Remotion.Linq.IQueryModelVisitor, Remotion.Linq.QueryModel, int)
  + Remotion.Linq.QueryModelVisitorBase.VisitBodyClauses(ObservableCollection<Remotion.Linq.Clauses.IBodyClause>, Remotion.Linq.QueryModel)
  + Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.VisitQueryModel(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitQueryModel(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryModelVisitor.VisitQueryModel(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.CreateQueryExecutor<TResult>(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery<TResult>(Remotion.Linq.QueryModel)
  + Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery<TResult>(object, Func<Func<Microsoft.EntityFrameworkCore.Query.QueryContext, TResult>>)
  + Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQuery<TResult>(System.Linq.Expressions.Expression)
  + Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute<TResult>(System.Linq.Expressions.Expression)
  + Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute<TResult>(System.Linq.Expressions.Expression)
  + System.Linq.Queryable.Count<TSource>(IQueryable<TSource>)

Contains Works(Replace .Select(udp => udp.DeviceId) with .Select(udp => udp.DeviceId.Value)
If remove dm => dm.Action == 27 &&, it will failed with another Exception, which is much more easy to recognise.

fail: Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler[1]
      An exception occurred in the database while iterating the results of a query.
      System.Data.SqlClient.SqlException (0x80131904): 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
         在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
         在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
         在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
         在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
         在 System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
         在 System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
         在 System.Data.SqlClient.SqlDataReader.Read()
         在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
         在 Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers)
         在 lambda_method(Closure , QueryContext )
         在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass19_1`1.<CompileQuery>b__1(QueryContext qc)
      ClientConnectionId:f79bebbe-3345-41c1-90f4-3e7fd1c4e36b
      Error Number:512,State:1,Class:16
System.Data.SqlClient.SqlException (0x80131904): 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   在 System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
   在 System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
   在 System.Data.SqlClient.SqlDataReader.Read()
   在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
   在 Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers)
   在 lambda_method(Closure , QueryContext )
   在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass19_1`1.<CompileQuery>b__1(QueryContext qc)
ClientConnectionId:f79bebbe-3345-41c1-90f4-3e7fd1c4e36b
Error Number:512,State:1,Class:16
System.ArgumentNullException: 值不能为 null。
参数名: source
   在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
   在 Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter.IsHiddenMember(MemberInfo info)
   在 Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter.Include(StackFrame frame)
   在 Microsoft.CodeAnalysis.Scripting.Hosting.CommonObjectFormatter.FormatException(Exception e)
   在 Microsoft.CodeAnalysis.CSharp.Scripting.Hosting.CSharpObjectFormatter.FormatException(Exception e)
   在 Microsoft.CodeAnalysis.Interactive.InteractiveHost.Service.<>c__DisplayClass42_0.<<ExecuteOnUIThread>b__0>d.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Microsoft.CodeAnalysis.Interactive.InteractiveHost.Service.<ExecuteOnUIThread>d__42.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Microsoft.CodeAnalysis.Interactive.InteractiveHost.Service.<ExecuteAsync>d__30.MoveNext()
@mikary
Copy link
Contributor

mikary commented Apr 8, 2016

I attempted to reproduce the issue using the latest packages Microsoft.EntityFrameworkCore:1.0.0-rc3-20498(aspnetcidev), but it does not throw the exception.

@yyjdelete can you confirm if this is still failing for you? If so, could you provide additional information about how your model is created and the specific data that causes the exception to be thrown?

Here is the code that I used to attempt to reproduce the issue:

    class Program
    {
        static void Main(string[] args)
        {
            using (var ctx = new ConfusingContext())
            {
                ctx.Database.EnsureDeleted();
                ctx.Database.EnsureCreated();

                ctx.Add(new UserDeviceMap
                {
                    UserId = 1025,
                    Status = 0,
                    DeviceId = 1
                });

                ctx.Add(new UserDeviceMap
                {
                    UserId = 1025,
                    Status = 0,
                    DeviceId = null
                });

                ctx.Add(new DeviceMsgUp()
                {
                    DeviceId = 1
                });

                ctx.SaveChanges();
            }

            using (var ctx = new ConfusingContext())
            {
                var count =
                ctx.DeviceMsgUps
                    .GroupJoin(ctx.UserDeviceMaps.Where(udp => udp.UserId == 1025 && udp.Status == 0 && udp.DeviceId != null), dmu => dmu.DeviceId, udp => udp.DeviceId, (key, vals) => new { key, vals })
                    .Where(pair => pair.vals.Any())
                    .Select(pair => pair.key)
                    .Select(key => new { key.Format })
                    .Count();
            }
        }

        public class ConfusingContext : DbContext
        {
            public DbSet<DeviceMsgUp> DeviceMsgUps { get; set; }
            public DbSet<UserDeviceMap> UserDeviceMaps { get; set; }

            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=ConfusingErrorTest;Integrated Security=True");
            }

            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<UserDeviceMap>().HasKey(udm => udm.UdMapId);
                modelBuilder.Entity<DeviceMsgUp>().HasKey(dmu => dmu.MessageId);
            }
        }

        [GeneratedCode("EF.Reverse.POCO.Generator", "2.18.1.0")]
        public class DeviceMsgUp
        {
            public int MessageId { get; set; } // Message_ID (Primary key)
            public int DeviceId { get; set; } // Device_ID
            public byte Format { get; set; } // Format
        }

        [GeneratedCode("EF.Reverse.POCO.Generator", "2.18.1.0")]
        public partial class UserDeviceMap
        {
            public int UdMapId { get; set; } // UDMap_ID (Primary key)
            public int UserId { get; set; } // User_ID
            public int? DeviceId { get; set; } // Device_ID
            public byte Status { get; set; } // Status
        }
    }

@yyjdelete
Copy link
Author

@mikary
Maybe you mix up #4860 with #4858, they are 2 independent issues.

The same with 1.0.0-rc3-20498, Test code for two, tradition csproj with DotNet461 is used,


using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;

namespace SF.School.Dal73
{
    class Program
    {
        static void Main(string[] args)
        {
            PrepareData();
            Test4860();
            Test4858();

            Console.ReadKey(true);
        }

        private static void Test4858()
        {
            using (var ctx = GetDbContext())
            {
                var query = ctx.DeviceMsgUps
                    .GroupJoin(ctx.UserDeviceMaps.Where(udp => udp.UserId == 1025 && udp.DeviceId != null), dmu => dmu.DeviceId, udp => udp.DeviceId, (key, vals) => new { key, vals })
                    .Where(pair => pair.vals.Any());
                int count1 = query.Count();//Expect 1, Actual 1
                int count2 = query.Select(pair => pair.key).Count();//Expect 1, Actual 3
                int count3 = query.Select(pair => pair.key).Select(key => new { key.Action }).Count();//Expect 1, Actual 2

                Console.WriteLine($"Result of Test4858 is {count1}/{count2}/{count3}, 1/1/1 is expected.");
            }
        }

        private static void Test4860()
        {
            using (var ctx = GetDbContext())
            {
                try
                {
                    var count = ctx.DeviceMsgUps
                             .Where(dm => dm.Action == 27
                                       && ctx.UserDeviceMaps
                             .Where(udp => udp.DeviceId != null).Select(udp => udp.DeviceId).Contains(dm.DeviceId))
                             .Count();
                    Console.WriteLine($"Result of Test4860 is {count}");
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine("Test4860 -> Boom!");
                    Console.Error.WriteLine(e);
                }
            }
        }

        private static void PrepareData()
        {
            using (var ctx = GetDbContext())
            {
                ctx.Database.EnsureDeleted();
                ctx.Database.EnsureCreated();

                ctx.UserDeviceMaps.Add(new UserDeviceMap
                {
                    UserId = 1025,
                    DeviceId = 1
                });

                ctx.DeviceMsgUps.Add(new DeviceMsgUp
                {
                    DeviceId = 1,
                    Action = 27,
                });

                ctx.DeviceMsgUps.Add(new DeviceMsgUp
                {
                    DeviceId = 1,
                    Action = 27,
                });

                ctx.DeviceMsgUps.Add(new DeviceMsgUp
                {
                    DeviceId = 2,
                    Action = 27,
                });

                ctx.SaveChanges();
            }
        }

        private static MyDbContext GetDbContext()
        {
            return new MyDbContext();
        }
    }

    public class MyDbContext : DbContext
    {
        public DbSet<DeviceMsgUp> DeviceMsgUps { get; set; }
        public DbSet<UserDeviceMap> UserDeviceMaps { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=ConfusingErrorTest;Integrated Security=True");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<UserDeviceMap>()
                .HasKey(udm => udm.UdMapId);
            modelBuilder.Entity<DeviceMsgUp>()
                .HasKey(dmu => dmu.MessageId);
        }
    }

    public class DeviceMsgUp
    {
        public int MessageId { get; set; } //(Primary key)
        public int DeviceId { get; set; } 
        public byte Action { get; set; }
    }

    public class UserDeviceMap
    {
        public int UdMapId { get; set; } //(Primary key)
        public int UserId { get; set; }
        public int? DeviceId { get; set; }
    }
}

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Ix-Async" version="1.2.5" targetFramework="net461" />
  <package id="Microsoft.AspNetCore.Hosting.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.AspNetCore.Hosting.Server.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.AspNetCore.Http.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.AspNetCore.Http.Features" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore.Commands" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore.Relational" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore.Relational.Design" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore.SqlServer" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.EntityFrameworkCore.SqlServer.Design" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Caching.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Caching.Memory" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Configuration.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.DependencyInjection" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.FileProviders.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Logging" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Logging.Abstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Options" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.PlatformAbstractions" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Microsoft.Extensions.Primitives" version="1.0.0-rc3-20498" targetFramework="net461" />
  <package id="Remotion.Linq" version="2.0.2" targetFramework="net461" />
  <package id="System.Collections" version="4.0.11-rc2-23931" targetFramework="net461" />
  <package id="System.Collections.Concurrent" version="4.0.12-rc2-23931" targetFramework="net461" />
  <package id="System.ComponentModel" version="4.0.1-rc2-23931" targetFramework="net461" />
  <package id="System.Diagnostics.Debug" version="4.0.11-rc2-23931" targetFramework="net461" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.0.0-rc2-23931" targetFramework="net461" />
  <package id="System.Globalization" version="4.0.11-rc2-23931" targetFramework="net461" />
  <package id="System.IO" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Linq" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Linq.Expressions" version="4.0.11-rc2-23931" targetFramework="net461" />
  <package id="System.Reflection" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Resources.ResourceManager" version="4.0.1-rc2-23931" targetFramework="net461" />
  <package id="System.Runtime" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Runtime.Extensions" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Runtime.InteropServices" version="4.1.0-rc2-23931" targetFramework="net461" />
  <package id="System.Text.Encodings.Web" version="4.0.0-rc2-23931" targetFramework="net461" />
  <package id="System.Threading" version="4.0.11-rc2-23931" targetFramework="net461" />
  <package id="System.Threading.Tasks" version="4.0.11-rc2-23931" targetFramework="net461" />
</packages>

@mikary
Copy link
Contributor

mikary commented Apr 12, 2016

There appears to be a bug in the translation of the Contains of the provided query:

var count = ctx.DeviceMsgUps
            .Where(dm => dm.Action == 27
                    && ctx.UserDeviceMaps
            .Where(udp => udp.DeviceId != null).Select(udp => udp.DeviceId).Contains(dm.DeviceId))
            .Count();

When calling SqlTranslatingExpressionVisitor.VisitBinary on the first Where, it attempts to create an expression with the left equal to a boolean expression for dm => dm.Action == 27 and the right equal to a nullable int expression equal to (SELECT [udp].[DeviceId] FROM [UserDeviceMaps] AS [udp] WHERE [udp].[DeviceId] IS NOT NULL). (Perhaps attempting to translate the right into a WHERE EXISTS)

@mikary
Copy link
Contributor

mikary commented Apr 12, 2016

clearing milestone for triage

@mikary mikary removed this from the 1.0.0 milestone Apr 12, 2016
@mikary mikary changed the title Confused exception with when Contains<int?> is used in where with other expression Query: Contains in AndAlso translates to non-boolean value Apr 12, 2016
@rowanmiller rowanmiller added this to the 1.0.0 milestone Apr 15, 2016
@rowanmiller rowanmiller assigned anpete and unassigned mikary Apr 15, 2016
@mikary
Copy link
Contributor

mikary commented Apr 26, 2016

Closing this issue as it appears to be a duplicate of #3705, Exception thrown for Where with Contains.

@mikary mikary closed this as completed Apr 26, 2016
@ajcvickers ajcvickers added the closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. label Oct 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. type-bug
Projects
None yet
Development

No branches or pull requests

5 participants