src/EFCore.Relational/Query/Internal/CaseWhenFlatteningExpressionVisitor.cs
/// <summary>
///     This is an internal API that supports the Entity Framework Core infrastructure and not subject to
///     the same compatibility standards as public APIs. It may be changed or removed without notice in
///     any release. You should only use it directly in your code with extreme caution and knowing that
///     doing so can result in application failures when updating to a new Entity Framework Core release.
/// </summary>
This is an internal API that supports the Entity Framework Core infrastructure and not subject to
the same compatibility standards as public APIs. It may be changed or removed without notice in
any release. You should only use it directly in your code with extreme caution and knowing that
doing so can result in application failures when updating to a new Entity Framework Core release.
This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs . It may be changed or removed without notice in any release . You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release .
protected override Expression VisitExtension(Expression extensionExpression)
        {
            Check.NotNull(extensionExpression, nameof(extensionExpression));
            if (extensionExpression is ShapedQueryExpression shapedQueryExpression)
            {
                return shapedQueryExpression.Update(Visit(shapedQueryExpression.QueryExpression), shapedQueryExpression.ShaperExpression);
            }
            if (extensionExpression is CaseExpression caseExpression
                && caseExpression.Operand == null
                && caseExpression.ElseResult is CaseExpression nestedCaseExpression
                && nestedCaseExpression.Operand == null)
            {
                return VisitExtension(_sqlExpressionFactory.Case(
                    caseExpression.WhenClauses.Union(nestedCaseExpression.WhenClauses).ToList(),
                    nestedCaseExpression.ElseResult));
            }
            return base.VisitExtension(extensionExpression);
        }
protected override Expression VisitExtension ( Expression extensionExpression ) { Check . NotNull ( extensionExpression , nameof ( extensionExpression ) ) ; if ( extensionExpression is ShapedQueryExpression shapedQueryExpression ) { return shapedQueryExpression . Update ( Visit ( shapedQueryExpression . QueryExpression ) , shapedQueryExpression . ShaperExpression ) ; } if ( extensionExpression is CaseExpression caseExpression && caseExpression . Operand == null && caseExpression . ElseResult is CaseExpression nestedCaseExpression && nestedCaseExpression . Operand == null ) { return VisitExtension ( _sqlExpressionFactory . Case ( caseExpression . WhenClauses . Union ( nestedCaseExpression . WhenClauses ) . ToList ( ) , nestedCaseExpression . ElseResult ) ) ; } return base . VisitExtension ( extensionExpression ) ; }
This is an internal API that supports the Entity Framework Core infrastructure and not subject to
the same compatibility standards as public APIs.
This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs .
// Only applies to 'CASE WHEN condition...' not 'CASE operand WHEN...'
extensionExpression
Expression