😊 Не совершайте эту ошибку
Не используйте
.ToLower() для сравнения строк. Почему? Метод
.ToLower() создаёт новую строку в памяти для каждого сравнения, что приводит к лишним аллокациям. Представьте метод, который вызывается очень часто — это может деградировать производительность приложения.
Кроме того,
.ToLower() чувствителен к культуре, то есть результат может различаться в зависимости от текущей культуры, установленной в исполняющем потоке. Что использовать вместо этого?
В .NET есть мощное перечисление —
StringComparison. Возможные варианты StringComparison:
- Ordinal — используйте в большинстве случаев, когда культурные правила не важны. Самый быстрый вариант.
- OrdinalIgnoreCase — для сравнений без учёта регистра, где культурные правила не имеют значения.
- CurrentCulture и CurrentCultureIgnoreCase — используйте при сравнении строк, отображаемых пользователю, так как они учитывают культурные правила.
- InvariantCulture и InvariantCultureIgnoreCase — подходят, когда нужна единообразная логика вне зависимости от культуры, например, при сохранении и извлечении данных.
> EF Core выбросит исключение, если использовать методы вроде
>
String.Equals(string, StringComparison), так как они не транслируются в SQL. Это не будет работать с EF.
Если вы используете SQL Server с коллацией по умолчанию, сравнение строк уже нечувствительно к регистру, поэтому обычное
a == b или string.Equals(a, b) в LINQ будет работать.👉Новости 👉База вопросов
