public SqlExpression? MakeStringEqualsExpression()

in EFCore/src/Query/Expressions/Internal/MySQLStringComparisonMethodTranslator.cs [132:209]


    public SqlExpression? MakeStringEqualsExpression(
      [NotNull] SqlExpression leftValue,
      [NotNull] SqlExpression rightValue,
      [NotNull] SqlExpression stringComparison)
    {
      if (TryGetExpressionValue<StringComparison>(stringComparison, out var cmp))
      {
        return CreateExpressionForCaseSensitivity(
          cmp,
          () =>
          {
            if (leftValue is ColumnExpression)
            {
              // Applying the binary operator to the non-column value enables SQL to
              // utilize an index if one exists.
              return _sqlExpressionFactory.Equal(
            leftValue,
            Utf8Bin(rightValue)
          );
            }
            else
            {
              return _sqlExpressionFactory.Equal(
                Utf8Bin(leftValue),
                rightValue
              );
            }
          },
          () =>
            _sqlExpressionFactory.Equal(
              LCase(leftValue),
              Utf8Bin(LCase(rightValue))
            )
        );
      }
      else
      {
#if !NET8_0_OR_GREATER
        return new CaseExpression(
          new[]
          {
        new CaseWhenClause(
          _sqlExpressionFactory.In(stringComparison, _caseSensitiveComparisons, false),
          // Case sensitive, accent sensitive
          _sqlExpressionFactory.Equal(
            leftValue,
            Utf8Bin(rightValue)
          )
        )
          },
          // Case insensitive, accent sensitive
          _sqlExpressionFactory.Equal(
            LCase(leftValue),
            Utf8Bin(LCase(rightValue))
          )
        );
#else
        return new CaseExpression(
          new[]
          {
        new CaseWhenClause(
          _sqlExpressionFactory.In(stringComparison,(IReadOnlyList<SqlExpression>)_caseSensitiveComparisons),
          // Case sensitive, accent sensitive
          _sqlExpressionFactory.Equal(
            leftValue,
            Utf8Bin(rightValue)
          )
        )
          },
          // Case insensitive, accent sensitive
          _sqlExpressionFactory.Equal(
            LCase(leftValue),
            Utf8Bin(LCase(rightValue))
          )
        );
#endif
      }
    }