Класс Enumerable LINQ - Создание последовательностей

ОГЛАВЛЕНИЕ

Создание последовательностей

Класс Enumerable предоставляет несколько общих методов, которые не являются методами расширения, но существуют для обеспечения возможности создания новых последовательностей. Начнем с изучения этих простых методов.

Метод Enumerable.Range создает новый последовательный список целых чисел. Указывается начальное значение и число элементов в списке. Метод возвращает последовательность IEnumerable(Of Integer). Этот метод можно использовать для решения исходной задачи данной статьи (т.е. для получения списка чисел, находящихся между двумя конечными точками и идущих в случайном порядке).

Следующий код заполняет список с помощью метода Range, затем вызывает метод Enumerable.OrderBy при помощи простого лямбда-выражения для обеспечения случайного порядка в последовательности.

' From RangeDemo in the sample:
Dim rnd As New System.Random
Dim items = Enumerable.Range(1, 10)
Dim randomList = _
  items.OrderBy(Function() rnd.Next())

При нескольких запусках примера процедуры каждый раз возвращаются разные результаты, но при каждом выполнении кода вы увидите список, подобный следующему.

6, 8, 7, 1, 2, 9, 10, 4, 3, 5

Метод Enumerable.Reverse возвращает входную последовательность в обратном порядке. В следующем коде метод Reverse вызывается и в качестве общего метода класса Enumerable, и в качестве метода экземпляра со списком, полученным в результате вызова метода Enumerable.Range.

'From ReverseDemo in the sample:
Dim items = Enumerable.Range(1, 10)
Dim reversed = items.Reverse()
reversed = Enumerable.Reverse(items)

Каким бы способом ни вызывался метод Reverse, в результате получается следующий список.

10, 9, 8, 7, 6, 5, 4, 3, 2, 1

Метод Enumerable.Repeat создает список, содержащий поданное на вход значение, повторенное указанное число раз.

'From RepeatDemo in the sample:
Dim repeated = Enumerable.Repeat("Hello", 5)

После вызова предыдущего кода повторяющаяся переменная содержит следующие элементы.

Hello, Hello, Hello, Hello, Hello

Метод Enumerable.Empty служит для создания пустой последовательности IEnumerable(Of T), подготовленной для приема данных указанного типа. С помощью этого метода можно создать пустой экземпляр коллекции и по необходимости добавлять в нее элементы. Если инициализировать коллекцию в пустой коллекции, никогда не придется беспокоиться о том, не имеет ли ссылка значение Nothing.

'From EmptyDemo in the sample:
Dim emptyList = _
 Enumerable.Empty(Of Customer)()