Метод 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 и повысить надежность своих приложений.