До EF Core 3.0 это работало нормально (оценивалось на сервере + клиенте):
var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.Equals(country.CountryCode, StringComparison.OrdinalIgnoreCase));
Какой метод является лучшим / предпочтительным для перевода части string.Equals(str, StringComparison.OrdinalIgnoreCase)
сейчас в EF Core 3.0, чтобы запрос выполнялся только на стороне сервера.
var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToUpper() == country.CountryCode.ToUpper());
or
var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToLower() == country.CountryCode.ToLower());
or
var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToUpperInvariant() == country.CountryCode.ToUpperInvariant());
or
var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToLowerInvariant() == country.CountryCode.ToLowerInvariant());
или что-то другое?
Equals* altogether and ensure the column uses a case-insensitive collation. All the snippets posted in the question will result in a bad query.
x = ›x.CountryCode. == country.CountryCode` будет работать нормально - person Panagiotis Kanavos   schedule 31.10.2019