protected override Expression VisitCase(CaseExpression caseExpression) { caseExpression.ThrowIfNull(nameof(caseExpression)); Sql.Append("ICASE("); if (caseExpression.Operand != null) { Sql.Append(" "); Visit(caseExpression.Operand); } var first = true; foreach (var whenClause in caseExpression.WhenClauses) { if (first) { first = false; } else { Sql.Append(","); } Visit(whenClause.Test); Sql.Append(","); Visit(whenClause.Result); } if (caseExpression.ElseResult != null) { Sql.Append(","); Visit(caseExpression.ElseResult); } Sql.Append(")"); return(caseExpression); }