Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базовые технологии платформы .NET.docx
Скачиваний:
13
Добавлен:
03.11.2018
Размер:
614.46 Кб
Скачать

9. Операторы кванторов и сравнения.

Операторы кванторов похожи на соответствующие операторы в математической логике.

bool Any<T>(this IEnumerable<T> source, Func<T, bool> predicate);

bool Any<T>(this IEnumerable<T> source);

bool All<T>(this IEnumerable<T> source, Func<T, bool> predicate);

bool Contains<T>(this IEnumerable<T> source, T value);

bool Contains<T>(this IEnumerable<T> source, T value,

IEqualityComparer<T> comparer)

Оператор Any() проверяет наличие хотя бы одного элемента в коллекции, удовлетворяющего указанному предикату. Вторая версия оператора Any() просто проверяет коллекцию на непустоту. Оператор All() возвращает true, если все элементы коллекции удовлетворяют предикату. И, наконец, оператор Contains() проверяет, входит ли заданное значение в коллекцию.

Оператор SequenceEqual() сравнивает две коллекции и возвращает true, если обе коллекции имеют одинаковую длину и их соответствующие элементы равны:

bool SequenceEqual<T>(this IEnumerable<T> first,

IEnumerable<T> second);

bool SequenceEqual<T>(this IEnumerable<T> first,

IEnumerable<T> second,

IEqualityComparer<T> comparer);

10. Операторы разбиения.

Операторы разбиения выделяют некую часть исходной коллекции (например, первые десять элементов).

IEnumerable<T> Take<T>(this IEnumerable<T> source, int count);

IEnumerable<T> TakeWhile<T>(this IEnumerable<T> source,

Func<T, bool> predicate);

IEnumerable<T> Skip<T>(this IEnumerable<T> source, int count);

IEnumerable<T> SkipWhile<T>(this IEnumerable<T> source,

Func<T, bool> predicate);

11. Операторы элемента.

Эта группа операторов предназначена для выделения из коллекции единственного элемента, удовлетворяющего определённым условиям.

Оператор First() выделяет первый элемент (или первый элемент, удовлетворяющий определённому предикату).

T First<T>(this IEnumerable<T> source);

T First<T>(this IEnumerable<T> source, Func<T, bool> predicate);

Если в коллекции нет элементов, или не нашлось элементов, удовлетворяющих предикату, оператор First() выбрасывает исключение InvalidOperationException. Если требуется, чтобы исключение не выбрасывалось, а возвращалось предопределённое значение для типа, следует использовать оператор FirstOrDefault().

T FirstOrDefault<T>(this IEnumerable<T> source);

T FirstOrDefault<T>(this IEnumerable<T> source,

Func<T, bool> predicate);

Аналогично работают операторы Last() и LastOrDefault() для выделения последнего элемента.

Операторы Single() и SingleOrDefault() рассчитаны на то, что коллекция (или набор элементов, удовлетворяющих предикату) будет состоять из одного элемента, который данные операторы и возвращают. Если в коллекции нет элементов, или их оказалось больше одного, оператор Single() выбрасывает исключение InvalidOperationException. Оператор SingleOrDefault() выбрасывает такое исключение, если элементов оказалось больше одного.

Пара операторов ElementAt() и ElementAtOrDefault() пытаются вернуть элемент на указанной целочисленной позиции.

Оператор DefaultIfEmpty() проверяет коллекцию на пустоту. Если в коллекции нет элементов, то возвращается или значение по умолчанию для типа, или указанное значение. Если коллекция непустая, то она и возвращается.

IEnumerable<T> DefaultIfEmpty<T>(this IEnumerable<T> source);

IEnumerable<T> DefaultIfEmpty<T>(this IEnumerable<T> source,

T defaultValue);