• Type: Icon: Sub-task Sub-task
    • Resolution: Done
    • Priority: Icon: Unknown Unknown
    • None
    • Affects Version/s: None
    • None
    • None
    • Dotnet Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      Maybe creating a explicit cast before send to Processo on EF?

      public class ExpressionTransformer : ExpressionVisitor
      {
          protected override Expression VisitBinary(BinaryExpression node)
          {
              if (node.NodeType == ExpressionType.NotEqual && node.Right is ConstantExpression constant && constant.Value == null)
              {
                  if (node.Left is MemberExpression member)
                  {
                      var memberType = GetMemberType(member.Member);
                      if (IsEnumerable(memberType))
                     

      {                     var enumerableType = memberType.GetInterface("IEnumerable`1") ?? typeof(System.Collections.IEnumerable);                     var castExpression = Expression.TypeAs(member, enumerableType);                     return Expression.NotEqual(castExpression, Expression.Constant(null));                 }

                  }
              }

              return base.VisitBinary(node);
          }

          private static Type GetMemberType(MemberInfo member)
          {
              return member.MemberType switch
             

      {             MemberTypes.Property => ((PropertyInfo)member).PropertyType,             MemberTypes.Field => ((FieldInfo)member).FieldType,             _ => throw new ArgumentException("Invalid member type")         }

      ;
          }

          private static bool IsEnumerable(Type type)
         

      {         return typeof(System.Collections.IEnumerable).IsAssignableFrom(type) && type != typeof(string);     }

      }

            Assignee:
            damien.guard@mongodb.com Damien Guard
            Reporter:
            marcelo@feodrippe.com Marcelo Feodrippe
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: