Эквивалент метода noneMatch() Java в C#

Подскажите, какой в данном слуачи будет эквивалент noneMatch() на C# в следующем Java коде

public static boolean isLowerCase(String text) {
        return text
            .codePoints()
            .noneMatch(Character::isUpperCase);
    }

Ответы (1 шт):

Автор решения: KuzCode

Как говорится в источнике:

Метод stream noneMatch() работает прямо противоположно методу anyMatch(), он возвращает true, если ни один из элементов потока не соответствует заданному предикату, он возвращает false, если какой-либо из элементов потока соответствует условию, заданному предикатом.

В C# нет прямого эквивалента, однако такого же результата можно добится через отрицание результата Any() - аналога anyMatch() в C#.

Пример:

var text = "Some text"
var isLower = !text.Any(symbol => char.IsUpper(symbol));

Другой вариант - использовать метод All(), который возвращает true, только если все члены последовательности удволетворяют предикат.

Пример:

var text = "Some text"
var isLower = text.All(symbol => char.IsLower(symbol));

Есть костыльный вариант:

var text = "Some text"
var isLower = text == text.ToLower();

Можно сделать красивое рассширение для удобства:

public static class StrinExtension
{
    public static bool IsLower(this string source)
        => source.All(symbol => symbol.IsLower());
}
→ Ссылка