Operações de projeção no LINQ

Projeção é uma operação na qual um objeto é transformado em uma forma totalmente nova, com apenas propriedades específicas.

Operador Descrição Sintaxe de expressão de consulta C # Sintaxe de expressão de consulta VB
Selecione O operador projeta valores com base em uma função de transformação selecionar Selecione
SelectMany O operador projeta as sequências de valores que são baseadas em uma função de transformação, bem como os achata em uma única sequência Use várias cláusulas from Use várias cláusulas From

Exemplo de seleção - expressão de consulta

C #

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

namespace Operators {
   class Program {
      static void Main(string[] args) {
      
         List<string> words = new List<string>() { "an", "apple", "a", "day" };

         var query = from word in words select word.Substring(0, 1);

         foreach (string s in query)
            Console.WriteLine(s);
            Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim words = New List(Of String) From {"an", "apple", "a", "day"}

      Dim query = From word In words Select word.Substring(0, 1);

      Dim sb As New System.Text.StringBuilder()
	  
      For Each letter As String In query
         sb.AppendLine(letter)
         Console.WriteLine(letter)
      Next
         Console.ReadLine()
		 
   End Sub
   
End Module

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

a
a
a
d

Exemplo de SelectMany - Expressão de consulta

C #

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

namespace Operators {
   class Program {
      static void Main(string[] args) {
      
         List<string> phrases = new List<string>() { "an apple a day", "the quick brown fox" };

         var query = from phrase in phrases
                     from word in phrase.Split(' ')
                     select word;

         foreach (string s in query)
            Console.WriteLine(s);
            Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim phrases = New List(Of String) From {"an apple a day", "the quick brown fox"}

      Dim query = From phrase In phrases 
                  From word In phrase.Split(" "c) 
                  Select word;

      Dim sb As New System.Text.StringBuilder()
	  
      For Each str As String In query
         sb.AppendLine(str)
         Console.WriteLine(str)
      Next 
         Console.ReadLine()
		 
   End Sub
   
End Module

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

an
apple
a
day
the
quick
brown
fox