Что такое ienumerable c
Что такое IEnumerable и IEnumerator в C#? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Что такое IEnumerable и IEnumerator в C#? Я много искал в интернете информации об этом, но везде объясняется слишком научно и непонятно. Можете объяснить, как это работает, как реализуется и, собственно, зачем это нужно так, чтобы было понятно и, если получится, с примерами?
3 ответа 3
Ценность такого цикла состоит в том, что вы можете «обходить» любую коллекцию, не заботясь о том, как же это сделать: например, для массива это просто обход по индексу, для структур, основанных на дереве — это обход дерева и. т. д.
Можно было бы захардкодировать методы обхода известных коллекций, но это слабо расширяемое решение, т. к. оно не позволяет создавать кастомные, ваши коллекции. А также компилятор приходилось бы обновлять каждый раз, когда стандартная библиотека добавляла бы в себя новую коллекцию. Поэтому такая идея не проходит, и нужно придумать общее решение, не зависящее от конкретной коллекции.
Итак, нам нужна абстракция, которая говорит «объекты этого типа представляют собой набор элементов, который можно обходить циклом наподобие for ». В OOP-языках такого рода абстракции традиционно представляются в виде интерфейсов. Поэтому и появился интерфейс IEnumerable (где T — тип элемента коллекции), означающий перечислимый контейнер (то есть тот, который можно обойти циклом).
Было решено, что для обхода будет применяться следующая языковая конструкция:
вполне можно написать, а ещё можно одновременно обходить коллекцию из разных потоков), то нам нужно знать, в каком месте находится каждый из одновременных обходов коллекции.
Теперь, энумератор. Он отвечает за один конкретный обход, и ему достаточно содержать две функции: MoveNext() для перехода к следующему элементу, и Current для получения текущего элемента.
Таким образом, энумерация выглядит приблизительно так:
Вот таким образом интерфейсы IEnumerable и IEnumerator позволяют реализовать энумерацию произвольного класса. Вот вам простой пример реализации (я убрал все проверки, чтобы код был проще):
Русские Блоги
Подробное объяснение IEnumerable и IEnumerator
При изучении C # меня всегда смущают такие интерфейсы, как IEnumerable, IEnumerator, ICollection и т. Д. Считаю необходимым прояснить суть IEnumerable и IEnumerator.
Давайте сначала посмотрим на грамматические определения двух интерфейсов IEnumerable и IEnumerator. На самом деле интерфейс IEnumerable очень прост: он содержит только абстрактный метод GetEnumerator (), который возвращает объект IEnumerator, который можно использовать для итерации по коллекции. Что есть у объекта IEnumerator? Это настоящий метод доступа к коллекции. Без него вы не сможете использовать оператор foreach для обхода коллекции или массива, потому что только объект IEnumerator может получить доступ к элементам в коллекции. Если даже элементы в коллекции недоступны, то цикл обход коллекции невозможен. Итак, давайте посмотрим, что определено в интерфейсе IEnumerator. Глядя на изображение ниже, мы знаем, что интерфейс IEnumerator определяет свойство Current, MoveNext и два метода Reset, насколько это просто. Поскольку объект IEnumerator является средством доступа, он должен иметь как минимум свойство Current для получения элементов в текущей коллекции.
Метод MoveNext просто перемещает внутреннюю позицию курсора вперед (то есть к следующему элементу). Если вы хотите пройти через него, как вы можете не переместить его вперед?
Детальное объяснение:
Когда дело доходит до IEnumerable, он всегда будет связан с IEnumerator и foreach.
C # поддерживает ключевое слово foreach, которое позволяет нам просматривать содержимое массива любого типа:
// Обходим элементы массива
foreach(int i in my myArrayOfInts)
Хотя кажется, что только массивы могут использовать эту структуру, на самом деле любой тип, поддерживающий метод GetEnumerator (), может работать с структурой foreach.
В идеале, как и массив значений данных, для создания каждого элемента в объекте Garage удобнее использовать foreach:
Что расстраивает, так это то, что компилятор сообщает нам, что класс Garage не реализует метод под названием GetEnumerator () (очевидно, обход с помощью foreachГаражный объектЭто невозможно. Поскольку класс Garage не реализует метод GetEnumerator (), объект Garage не может возвращать объект IEnumerator. Без объекта IEnumerator невозможно вызвать метод MoveNext (). Если вы не можете вызвать MoveNext, это будет невозможно зациклить). Этот метод определяется интерфейсом IEnumerable, скрытым в пространстве имен System.collections. (обращать внимание,Фактически, мы перебираем объекты вместо классов, но этот объект является объектом коллекции.)
Классы или структуры, поддерживающие такое поведение, фактически объявляют, что они предоставляют вызывающему объекту содержащиеся подэлементы:
// Этот интерфейс сообщает, что подпункты объекта передачи должны быть перечислены
public interface IEnumerable
Как видите, метод GetEnumerator возвращает ссылку на другой интерфейс System.Collections.IEnumerator. Этот интерфейс предоставляет инфраструктуру, которую вызывающий может использовать для перемещения внутренних объектов, содержащихся в совместимом с IEnumerable контейнере.
// Этот интерфейс позволяет вызывающей стороне получать дочерние элементы контейнера
public interface IEnumerator
Bool MoveNext (); // Перемещаем внутреннюю позицию курсора вперед
Object Current
Void Reset (); // Сбрасываем курсор на передний план первого члена
Следовательно, если класс Garage также может использовать foreach для перемещения по элементам, мы должны изменить тип Garage для поддержки этих интерфейсов, и каждый метод можно реализовать вручную, но это требует больших усилий. Хотя нет никаких проблем с разработкой GetEnumerator (), MoveNext (), Current и Reset () самостоятельно, есть более простой способ. Поскольку тип System.Array и многие другие типы (например, List) реализовали интерфейсы IEnumerable и IEnumerator, вы можете просто делегировать запрос System.Array следующим образом:
Давайте посмотрим на методы ручной реализации интерфейса IEnumberable и интерфейса IEnumerator:
разделитель, который может быть разделен одним или несколькими символами
IEnumerable интерфейс
Он реализует набор интерфейсов IEnmerable и строго типизирован. Он обеспечивает более безопасный для типов способ итерации дочерних объектов.
Подводя итог, можно сказать, что наличие у типа поддержки обхода по каждому элементу должно соответствовать следующим условиям:
Вариант 1. Пусть этот класс реализует интерфейс IEnumerable
Сценарий 2: этот класс имеет общедоступный метод экземпляра GetEnumerator, а тип возвращаемого значения имеет общедоступный метод экземпляра bool MoveNext () и общедоступное свойство экземпляра Current.
IEnumerable интерфейс в C# и LSP
LSP и IEnumerable интерфейс
Чтобы ответить на вопрос, нарушают ли классы-наследники IEnumerable LSP принцип, давайте посмотрим, что как вообще можно нарушить этот принцип.
Имплементации IEnumerable интерфейса
Свойство Current с типом T не требует вызова MoveNext(), в то время как свойство Current с типом object требует:
Так и бесконечной последовательностью элементов:
И это не выдуманный пример. Класс BlockingCollection имплементирует IEnumerator таким образом, что вызывающий поток блокируется на методе MoveNext() до тех пор, пока какой-нибудь другой поток не добавит элемент в коллекцию:
Другими словами, интерфейс IEnumerable не дает никаких гарантий о нижележащем множестве элементов, он даже не гарантирует, что это множество конечно. Все, что он нам говорит, — это то, что это множество может быть каким-то образом проитерировано.
IEnumerable и LSP
Итак, нарушают ли LSP классы, имплементирующие IEnumerable? Рассмотрим следующий пример:
Очевидно, метод Process не сработает как задумано. Но будет ли это из-за того, что класс OrderCollection нарушает LSP? Нет. OrderCollection скрупулезно следует контракту интерфейса IEnumerable: он предоставляет новый объект каждый раз, когда его просят об этом.
Проблема в том, что метод Process ожидает от объекта, реализующего IEnumerable, большего, чем этот интерфейс обещает. Нет никакой гарантии, что нижележащий класс переменной orders — конечная коллекция. Как я упомянул ранее, orders может быть экземпляром класса BlockingCollection, что делает бесполезными попытки проитерировать все его элементы.
IEnumerable и коллекции только для чтения
В то время как это кажется хорошим решением, это накладывает слишком большие ограничения на подребителей интерфейса.
Это один из наиболее часто встречаемых подходов: использование LINQ для обхода ограничений IEnumerable. Не смотря на то, что такой код довольно прост, он имеет один очевидных недостаток: в нем происходит итерирование коллекции 10 раз, в то время как тот же результат может быть достигнут простым обращением по индексу.
Решение очевидно — использовать IReadOnlyList:
Имплементации IEnumerable и LSP
В этом коде есть очевидная проблема: обращение к БД отложено до тех пор, пока клиентский код не начнет итерировать получившееся множество. Т.к. к этому моменту подключение к БД закрыто, обращение приведет к исключению:
Такая имплементация нарушает LSP, т.к. интерфейс IEnumerable сам по себе не имеет никаких предусловий, требующих наличия открытого подключения к базе данных. Следуя этому интерфейсу, вы должны иметь возможность проитерировать IEnumerable не зависимо от того, существует ли такое подключение. Как мы видим, класс DbQuery усилил предусловия IEnumerable и, таким образом, нарушил LSP.
В общем-то, это не обязательно является признаком плохого дизайна. Ленивые вычисления — довольно распространенный подход при работе с БД. Он позволяет выполнять несколько запросов за одно обращение к БД и таким образом увеличивает общую производительность системы. Ценой здесь является нарушение LSP принципа.
IEnumerable Интерфейс
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет перечислитель, который поддерживает простой перебор элементов в указанной коллекции.
Параметры типа
Тип объектов для перечисления.
Это ковариантный параметр типа. Это означает, что вы можете использовать любой из указанных типов или любой тип, являющийся более производным. Дополнительные сведения о ковариантности и контрвариантности см. в статье Ковариантность и контрвариантность в универсальных шаблонах.
Примеры
Комментарии
IEnumerable содержит единственный метод, который необходимо реализовать при реализации этого интерфейса. GetEnumerator, возвращающий IEnumerator объект. Возвращаемый объект IEnumerator предоставляет возможность итерации по коллекции, предоставляя Current свойство.
Примечания для тех, кто реализует этот метод
Методы
Возвращает перечислитель, выполняющий перебор элементов в коллекции.
Методы расширения
Создает неизменяемый массив на основе указанной коллекции.
Создает неизменяемый словарь на основе существующей коллекции элементов, применяя функцию преобразования к исходным ключам.
Создает неизменяемый словарь на основе последовательности, подвергнутой определенному преобразованию.
Выполняет перечисление и преобразование последовательности и создает неизменяемый словарь на основе ее содержимого.
Выполняет перечисление и преобразование последовательности и создает на основе ее содержимого неизменяемый словарь с использованием указанной функции сравнения ключей.
Выполняет перечисление и преобразование последовательности и создает на основе ее содержимого неизменяемый словарь с использованием указанных функций сравнения ключей и значений.
Выполняет перечисление последовательности и создает неизменяемый набор хэширования на основе ее содержимого.
Выполняет перечисление последовательности, создает неизменяемый набор хэширования на основе ее содержимого и использует указанную функцию сравнения для типа набора.
Выполняет перечисление последовательности и создает неизменяемый список на основе ее содержимого.
Выполняет перечисление и преобразование последовательности и создает неизменяемый отсортированный словарь на основе ее содержимого.
Выполняет перечисление и преобразование последовательности и создает на основе ее содержимого неизменяемый отсортированный словарь с использованием указанной функции сравнения ключей.
Выполняет перечисление и преобразование последовательности и создает на основе ее содержимого неизменяемый отсортированный словарь с использованием указанных функций сравнения ключей и значений.
Выполняет перечисление последовательности и создает неизменяемый отсортированный набор на основе ее содержимого.
Выполняет перечисление последовательности, создает неизменяемый отсортированный набор на основе ее содержимого и использует указанную функцию сравнения.
Применяет к последовательности агрегатную функцию.
Применяет к последовательности агрегатную функцию. Указанное начальное значение используется в качестве исходного значения агрегатной операции.
Применяет к последовательности агрегатную функцию. Указанное начальное значение служит исходным значением для агрегатной операции, а указанная функция используется для выбора результирующего значения.
Проверяет, все ли элементы последовательности удовлетворяют условию.
Проверяет, содержит ли последовательность какие-либо элементы.
Проверяет, удовлетворяет ли какой-либо элемент последовательности заданному условию.
Добавляет значение в конец последовательности.
Вычисляет среднее для последовательности значений типа Decimal, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений типа Double, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений типа Int32, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений типа Int64, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений Decimal обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений Double обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений Int32 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений Int64 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений Single обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет среднее для последовательности значений типа Single, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Приводит элементы объекта IEnumerable к заданному типу.
Объединяет две последовательности.
Определяет, содержится ли указанный элемент в последовательности, используя компаратор проверки на равенство по умолчанию.
Возвращает количество элементов в последовательности.
Возвращает число, представляющее количество элементов последовательности, удовлетворяющих заданному условию.
Возвращает элементы указанной последовательности или одноэлементную коллекцию, содержащую значение параметра типа по умолчанию, если последовательность пуста.
Возвращает элементы указанной последовательности или одноэлементную коллекцию, содержащую указанное значение, если последовательность пуста.
Возвращает различающиеся элементы последовательности, используя для сравнения значений компаратор проверки на равенство по умолчанию.
Возвращает различные элементы из последовательности в соответствии с заданной функцией выбора ключа.
Возвращает различные элементы из последовательности в соответствии с заданной функцией выбора ключа.
Возвращает элемент по указанному индексу в последовательности.
Возвращает элемент по указанному индексу в последовательности.
Возвращает элемент последовательности по указанному индексу или значение по умолчанию, если индекс вне допустимого диапазона.
Возвращает элемент последовательности по указанному индексу или значение по умолчанию, если индекс вне допустимого диапазона.
Находит разность множеств, представленных двумя последовательностями, используя для сравнения значений компаратор проверки на равенство по умолчанию.
Формирует разность множества двух последовательностей в соответствии с заданной функцией выбора ключа.
Формирует разность множества двух последовательностей в соответствии с заданной функцией выбора ключа.
Возвращает первый элемент последовательности.
Возвращает первый элемент последовательности, удовлетворяющий указанному условию.
Возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
Возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
Возвращает первый элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.
Возвращает первый элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и сравнивает ключи с помощью указанного компаратора.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и проецирует элементы каждой группы с помощью указанной функции.
Группирует элементы последовательности в соответствии с функцией селектора ключа. Ключи сравниваются с помощью компаратора, элементы каждой группы проецируются с помощью указанной функции.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа. Ключи сравниваются с использованием заданного компаратора.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа. Элементы каждой группы проецируются с помощью указанной функции.
Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа. Значения ключей сравниваются с помощью указанного компаратора, элементы каждой группы проецируются с помощью указанной функции.
Устанавливает корреляцию между элементами двух последовательностей на основе равенства ключей и группирует результаты. Для сравнения ключей используется компаратор проверки на равенство по умолчанию.
Находит пересечение множеств, представленных двумя последовательностями, используя для сравнения значений компаратор проверки на равенство по умолчанию.
Создает пересечение множеств двух последовательностей в соответствии с заданной функцией выбора ключа.
Создает пересечение множеств двух последовательностей в соответствии с заданной функцией выбора ключа.
Устанавливает корреляцию между элементами двух последовательностей на основе сопоставления ключей. Для сравнения ключей используется компаратор проверки на равенство по умолчанию.
Возвращает последний элемент последовательности.
Возвращает последний элемент последовательности, удовлетворяющий указанному условию.
Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
Возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.
Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.
Возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если ни одного такого элемента не найдено.
Возвращает значение типа Int64, представляющее общее число элементов в последовательности.
Возвращает значение типа Int64, представляющее число элементов последовательности, удовлетворяющих заданному условию.
Возвращает максимальное значение, содержащееся в универсальной последовательности.
Возвращает максимальное значение, содержащееся в универсальной последовательности.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение типа Decimal.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение типа Double.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение типа Int32.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение типа Int64.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Decimal обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Double обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Int32 обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Int64 обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение Single обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает максимальное значение типа Single.
Вызывает функцию преобразования для каждого элемента универсальной последовательности и возвращает максимальное результирующее значение.
Возвращает максимальное значение в универсальной последовательности в соответствии с заданной функцией выбора ключа.
Возвращает максимальное значение в универсальной последовательности в соответствии с заданной функцией выбора ключа.
Возвращает минимальное значение, содержащееся в универсальной последовательности.
Возвращает минимальное значение, содержащееся в универсальной последовательности.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение типа Decimal.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение типа Double.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение типа Int32.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение типа Int64.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Decimal обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Double обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Int32 обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Int64 обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение Single обнуляемого типа.
Вызывает функцию преобразования для каждого элемента последовательности и возвращает минимальное значение типа Single.
Вызывает функцию преобразования для каждого элемента универсальной последовательности и возвращает минимальное результирующее значение.
Возвращает минимальное значение в универсальной последовательности в соответствии с заданной функцией выбора ключа.
Возвращает минимальное значение в универсальной последовательности в соответствии с заданной функцией выбора ключа.
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.
Сортирует элементы последовательности в порядке возрастания ключа.
Сортирует элементы последовательности в порядке возрастания с использованием указанного компаратора.
Сортирует элементы последовательности в порядке убывания ключа.
Сортирует элементы последовательности в порядке убывания с использованием указанного компаратора.
Добавляет значение в начало последовательности.
Изменяет порядок элементов последовательности на противоположный.
Проецирует каждый элемент последовательности в новую форму.
Проецирует каждый элемент последовательности в новую форму, добавляя индекс элемента.
Проецирует каждый элемент последовательности в объект IEnumerable и объединяет результирующие последовательности в одну последовательность.
Проецирует каждый элемент последовательности в объект IEnumerable и объединяет результирующие последовательности в одну последовательность. Индекс каждого элемента исходной последовательности используется в проецированной форме этого элемента.
Определяет, совпадают ли две последовательности, используя для сравнения элементов компаратор проверки на равенство по умолчанию, предназначенный для их типа.
Возвращает единственный элемент последовательности и генерирует исключение, если число элементов последовательности отлично от 1.
Возвращает единственный элемент последовательности, удовлетворяющий указанному условию, и вызывает исключение, если таких элементов больше одного.
Возвращает единственный элемент последовательности или значение по умолчанию, если последовательность пуста; если в последовательности более одного элемента, генерируется исключение.
Возвращает единственный элемент последовательности или значение по умолчанию, если последовательность пуста; если в последовательности более одного элемента, генерируется исключение.
Возвращает единственный элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если такого элемента не существует; если условию удовлетворяет более одного элемента, вызывается исключение.
Возвращает единственный элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если такого элемента не существует; если условию удовлетворяет более одного элемента, вызывается исключение.
Пропускает заданное число элементов в последовательности и возвращает остальные элементы.
Возвращает новую перечислимую коллекцию, содержащую элементы из source с исключенными count элементами из конца исходной коллекции.
Пропускает элементы в последовательности, пока они удовлетворяют заданному условию, и затем возвращает оставшиеся элементы.
Пропускает элементы в последовательности, пока они удовлетворяют заданному условию, и затем возвращает оставшиеся элементы. Индекс элемента используется в логике функции предиката.
Вычисляет сумму последовательности значений типа Decimal, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений типа Double, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений типа Int32, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений типа Int64, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений Decimal обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений Double обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений Int32 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений Int64 обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений Single обнуляемого типа, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Вычисляет сумму последовательности значений типа Single, получаемой в результате применения функции преобразования к каждому элементу входной последовательности.
Возвращает указанное число подряд идущих элементов с начала последовательности.
Возвращает указанный диапазон смежных элементов из последовательности.
Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию.
Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию. Индекс элемента используется в логике функции предиката.
Создает словарь Dictionary из объекта IEnumerable в соответствии с заданной функцией селектора ключа.
Создает словарь Dictionary из объекта IEnumerable в соответствии с заданной функцией селектора ключа и компаратором ключей.
Создает словарь Dictionary из объекта IEnumerable в соответствии с заданными функциями селектора ключа и селектора элемента.
Создает словарь Dictionary из объекта IEnumerable в соответствии с заданным компаратором и функциями селектора ключа и селектора элемента.
Создает HashSet из IEnumerable с использованием comparer для сравнения ключей.
Создает словарь Lookup из объекта IEnumerable в соответствии с заданной функцией селектора ключа.
Создает словарь Lookup из объекта IEnumerable в соответствии с заданной функцией селектора ключа и компаратором ключей.
Создает словарь Lookup из объекта IEnumerable в соответствии с заданными функциями селектора ключа и селектора элемента.
Создает объект Lookup из объекта IEnumerable в соответствии с заданным компаратором и функциями селектора ключа и селектора элемента.
Пытается определить количество элементов в последовательности без принудительного перечисления.
Находит объединение множеств, представленных двумя последовательностями, используя для сравнения значений компаратор проверки на равенство по умолчанию.
Создает объединение множеств двух последовательностей в соответствии с заданной функцией выбора ключа.
Создает объединение множеств двух последовательностей в соответствии с заданной функцией выбора ключа.
Выполняет фильтрацию последовательности значений на основе заданного предиката.
Выполняет фильтрацию последовательности значений на основе заданного предиката. Индекс каждого элемента используется в логике функции предиката.
Создает последовательность кортежей с элементами из двух указанных последовательностей.
Создает последовательность кортежей с элементами из трех указанных последовательностей.
Применяет указанную функцию к соответствующим элементам двух последовательностей, что дает последовательность результатов.
Позволяет осуществлять параллельный запрос.
Позволяет осуществлять параллельный запрос.
Преобразовывает коллекцию IEnumerable в объект IQueryable.
Возвращает коллекцию элементов, содержащую предков каждого узла в исходной коллекции.
Возвращает отфильтрованную коллекцию элементов, содержащую предков каждого узла в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.
Возвращает коллекцию подчиненных узлов каждого документа и элемента в исходной коллекции.
Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.
Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.
Возвращает коллекцию дочерних элементов каждого элемента и документа в исходной коллекции.
Возвращает отфильтрованную коллекцию дочерних элементов каждого элемента и документа в исходной коллекции. В коллекцию включаются только элементы, соответствующие XName.
Возвращает коллекцию узлов, содержащую все узлы в исходной коллекции, отсортированные в порядке следования документов.
Возвращает коллекцию дочерних узлов каждого документа и элемента в исходной коллекции.
Удаление каждого узла в исходной коллекции из родительского узла.