Ответ 1
Использовать перегруженный метод Enumerable.Contains, который принимает равенство:
strings.Contains("ABC", StringComparer.InvariantCultureIgnoreCase)
Также есть сопоставитель строк в поле, которое вы можете использовать.
Предположим, что у меня есть .net Массив строк.
string[] strings = new string[] { "AbC", "123", "Xyz", "321" };
Если бы я хотел посмотреть, содержит ли массив строк "ABC", я мог бы написать
strings.Contains("ABC");
Однако предположим, что мне нужна функция, которая вернет true, если в верхнем регистре строк строки "ABC". Я мог бы загладить весь массив, но похоже, что метод .Contains
имеет некоторые перегрузки для указания сравнения, но я смущен синтаксисом.
Как я могу использовать метод IEnumerable<string>.Contains()
реализовать эту логику?
Использовать перегруженный метод Enumerable.Contains, который принимает равенство:
strings.Contains("ABC", StringComparer.InvariantCultureIgnoreCase)
Также есть сопоставитель строк в поле, которое вы можете использовать.
Мне лично нравится этот парень LambdaComparer
, который действительно полезен для таких вещей:
LINQ Ваши коллекции с IEqualityComparer и выражениями лямбда
Пример использования:
var comparer = new LambdaComparer<string>(
(lhs, rhs) => lhs.Equals(rhs, StringComparison.InvariantCultureIgnoreCase));
var seq = new[]{"a","b","c","d","e"};
Debug.Assert(seq.Contains("A", comparer));