Operações de geração em LINQ

Uma nova sequência de valores é criada por operadores geracionais.

Operador Descrição Sintaxe de expressão de consulta C # Sintaxe de expressão de consulta VB
DefaultIfEmpty Quando aplicado a uma sequência vazia, gera um elemento padrão dentro de uma sequência Não aplicável Não aplicável
Vazio Retorna uma sequência vazia de valores e é o operador geracional mais simples Não aplicável Não aplicável
Alcance Gera uma coleção com uma sequência de inteiros ou números Não aplicável Não aplicável
Repetir Gera uma sequência contendo valores repetidos de um comprimento específico Não aplicável Não aplicável

Exemplo de DefaultIfEmpty - Enumerable.DefaultIfEmpty.Method

C #

using System;
using System.Collections.Generic;
using System.Linq;

namespace Operators {
   class DefaultEmpty {
      static void Main(string[] args) {
      
         Pet barley = new Pet() { Name = "Barley", Age = 4 };
         Pet boots = new Pet() { Name = "Boots", Age = 1 };
         Pet whiskers = new Pet() { Name = "Whiskers", Age = 6 };
         Pet bluemoon = new Pet() { Name = "Blue Moon", Age = 9 };
         Pet daisy = new Pet() { Name = "Daisy", Age = 3 };

         List<Pet> pets = new List<Pet>() { barley, boots, whiskers, bluemoon, daisy };

         foreach (var e in pets.DefaultIfEmpty()) {
            Console.WriteLine("Name = {0} ", e.Name);
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey();
      }

      class Pet {
         public string Name { get; set; }
         public int Age { get; set; }
      }
   }
}

VB

Module Module1

   Sub Main()

      Dim barley As New Pet With {.Name = "Barley", .Age = 4}
      Dim boots As New Pet With {.Name = "Boots", .Age = 1}
      Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
      Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
      Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

      Dim pets As New System.Collections.Generic.List(Of Pet)(New Pet() {barley, boots, whiskers, bluemoon, daisy})

      For Each e In pets.DefaultIfEmpty()
         Console.WriteLine("Name = {0}", e.Name)
      Next

      Console.WriteLine(vbLf & "Press any key to continue.")
      Console.ReadKey()
   End Sub

   Class Pet
      Public Property Name As String
      Public Property Age As Integer
   End Class
   
End Module

Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -

Name = Barley 
Name = Boots 
Name = Whiskers
Name = Blue Moon
Name = Daisy

Press any key to continue.

Exemplo de intervalo - método Enumerable.Range

C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators {
   class Program {
      static void Main(string[] args) {
         // Generate a sequence of integers from 1 to 5  
         // and then select their squares.
		 
         IEnumerable<int> squares = Enumerable.Range(1, 5).Select(x => x * x);

         foreach (int num in squares) {
            Console.WriteLine(num);
         }
			
         Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim squares As IEnumerable(Of Integer) = _Enumerable.Range(1, 5).Select(Function(x) x * x)

      Dim output As New System.Text.StringBuilder
	  
      For Each num As Integer In squares
         output.AppendLine(num)
         Console.WriteLine(num)
      Next
		
      Console.ReadLine()
	  
   End Sub
   
End Module

Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -

1
4
9
16
25

Exemplo de repetição - método Enumerable.Repeat (Of TResult)

C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators {
   class Program {
      static void Main(string[] args) {
         IEnumerable<string> strings = Enumerable.Repeat("I like programming.", 3);

         foreach (String str in strings) {
            Console.WriteLine(str);
         }
			
         Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim sentences As IEnumerable(Of String) = _Enumerable.Repeat("I like programming.", 3)

      Dim output As New System.Text.StringBuilder
	  
      For Each sentence As String In sentences
         output.AppendLine(sentence)
         Console.WriteLine(sentence)
      Next

      Console.ReadLine()
	  
   End Sub
   
End Module

Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -

I like programming.
I like programming.
I like programming.