Освоение сравнения строк без учета регистра с помощью LINQ: подробное руководство

Метод 1: использование класса StringComparer

Один простой способ выполнить сравнение строк без учета регистра в LINQ — использовать класс StringComparer. Этот класс предоставляет предопределенные экземпляры, такие как StringComparer.CurrentCultureIgnoreCaseи StringComparer.OrdinalIgnoreCase, которые можно использовать для сравнений без учета регистра.

string searchText = "apple";
List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
var results = fruits.Where(fruit => string.Equals(fruit, searchText, StringComparer.OrdinalIgnoreCase));
foreach (var result in results)
{
    Console.WriteLine(result);
}

Метод 2: использование методов ToLowerили ToUpper

Другой способ добиться сравнения без учета регистра — преобразовать обе строки в нижний или верхний регистр с помощью методов ToLowerили ToUpperперед выполнением сравнения.

string searchText = "apple";
List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
var results = fruits.Where(fruit => fruit.ToLower() == searchText.ToLower());
foreach (var result in results)
{
    Console.WriteLine(result);
}

Метод 3: использование метода IndexOf

Метод IndexOfможно использовать для проверки наличия подстроки внутри строки. Указав параметр StringComparison.OrdinalIgnoreCase, мы можем выполнить поиск без учета регистра.

string searchText = "apple";
List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
var results = fruits.Where(fruit => fruit.IndexOf(searchText, StringComparison.OrdinalIgnoreCase) >= 0);
foreach (var result in results)
{
    Console.WriteLine(result);
}

Метод 4. Использование регулярных выражений

Регулярные выражения предоставляют мощные возможности сопоставления с образцом, включая сопоставление без учета регистра. Мы можем использовать класс Regexдля сравнения строк без учета регистра.

string searchText = "apple";
List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };
var results = fruits.Where(fruit => Regex.IsMatch(fruit, searchText, RegexOptions.IgnoreCase));
foreach (var result in results)
{
    Console.WriteLine(result);
}

В этой статье мы рассмотрели несколько методов сравнения строк без учета регистра с помощью LINQ. Мы рассмотрели такие подходы, как использование класса StringComparer, преобразование строк в нижний или верхний регистр, использование метода IndexOfи использование регулярных выражений. У каждого метода есть свои преимущества и варианты использования, поэтому выберите тот, который лучше всего соответствует вашим требованиям.

Освоив эти методы, вы сможете эффективно выполнять сравнения строк без учета регистра в запросах LINQ и повысить надежность своих приложений.