English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
LINQ включает генерационные операторы DefaultIfEmpty, Empty, Range & Repeat. Методы Empty, Range и Repeat не являются расширениями IEnumerable или IQueryable, а просто статическими методами, определенными в статическом классе Enumerable.
Метод | Описание |
---|---|
Empty | Возвращает пустой набор |
Range | Сначала из первого элемента, используя указанное количество элементов с последовательными значениями, создается набор типа IEnumerable <T>. |
Repeat | Создание набора IEnumerable<T> с заданным количеством элементов и каждым элементом, содержащим одинаковые заданные значения. |
Empty() как и другие методы LINQ, не является расширением IEnumerable или IQueryable. Это статический метод, включенный в статический класс Enumerable. Таким образом, вы можете вызывать его, как и другие статические методы (например, Enumerable.Empty<TResult>()). Метод Empty() возвращает пустой набор заданного типа, как показано ниже.
var emptyCollection1 = Enumerable.Empty<string>(); var emptyCollection2 = Enumerable.Empty<Student>(); Console.WriteLine("Count: {0}", emptyCollection1.Count()); Console.WriteLine("Type: {0}", emptyCollection1.GetType().Name); Console.WriteLine("Count: {0}", emptyCollection2.Count()); Console.WriteLine("Type: {0}", emptyCollection2.GetType().Name);
Type: String[] Count: 0 Type: Student[] Count: 0
Метод Range() возвращает набор IEnumerable<T> с заданным количеством элементов и последовательными значениями от первого элемента.
var intCollection = Enumerable.Range(10, 10); Console.WriteLine("Общее количество: {0}", intCollection.Count()); for(int i = 0; i < intCollection.Count(); i++) Console.WriteLine("Значение, положение индекса {0} : {1}", i, intCollection.ElementAt(i));
Общее количество: 10 Значение, индекс位置的值为 0: 10 Значение, индекс位置的值为 1: 11 Значение, индекс位置的值为 2: 12 Значение, индекс位置的值为 3: 13 Значение, индекс位置的值为 4: 14 Значение, индекс位置的值为 5: 15 Значение, индекс位置的值为 6: 16 Значение, индекс位置的值为 7: 17 Значение, положение индекса 8: 18 Значение, положение индекса 9: 19
В предыдущем примере Enumerable.Range(10, 10) создало множество из 10 элементов типа int, значения которых начинаются от 10. Первый параметр определяет начальное значение элементов, второй параметр определяет количество создаваемых элементов.
Метод Repeat() использует указанное количество элементов для создания множества типа IEnumerable<T>, каждый элемент содержит одинаковое указанное значение.
var intCollection = Enumerable.Repeat<int>(10, 10); Console.WriteLine("Общее количество: {0}", intCollection.Count()); for(int i = 0; i < intCollection.Count(); i++) Console.WriteLine("Значение, положение индекса {0} : {1}", i, intCollection.ElementAt(i));
Общее количество: 10 Значение, положение индекса 0: 10 Значение, положение индекса 1: 10 Значение, положение индекса 2: 10 Значение, положение индекса 3: 10 Значение, положение индекса 4: 10 Значение, положение индекса 5: 10 Значение, положение индекса 6: 10 Значение, положение индекса 7: 10 Значение, положение индекса 8: 10 Значение, положение индекса 9: 10
В предыдущем примере Enumerable.Repeat<int>(10, 10) Создайте множество из 100 элементов типа int с повторяющимся значением 10, первый параметр определяет значение всех элементов, второй параметр определяет количество создаваемых элементов.