Класс 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)()