Definir operações no LINQ

Existem quatro operadores para as operações definidas, cada um produzindo um resultado com base em critérios diferentes.

Operador Descrição Sintaxe de expressão de consulta C # Sintaxe de expressão de consulta VB
Distinto Resulta em uma lista de valores únicos de uma coleção, filtrando dados duplicados, se houver Não aplicável Distinto
Exceto Compara os valores de duas coleções e retorna aqueles de uma coleção que não estão na outra coleção Não aplicável Não aplicável
Cruzar Retorna o conjunto de valores encontrados como idênticos em duas coleções separadas Não aplicável Não aplicável
União Combina o conteúdo de duas coleções diferentes em uma única lista que também sem qualquer conteúdo duplicado Não aplicável Não aplicável

Exemplo de distinto - expressão de consulta

VB

Module Module1

   Sub Main()
  
      Dim classGrades = New System.Collections.Generic.List(Of Integer) From {63, 68, 71, 75, 68, 92, 75}

      Dim distinctQuery = From grade In classGrades 
                          Select grade Distinct

      Dim sb As New System.Text.StringBuilder("The distinct grades are: ")
	  
      For Each number As Integer In distinctQuery
         sb.Append(number & " ")
      Next

      MsgBox(sb.ToString())
	  
   End Sub
   
End Module

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

The distinct grades are: 63 68 71 75 92

Exemplo de método Except - Enumerable.Except

C #

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

namespace Operators {
   class Program {
      static void Main(string[] args) {
      
         double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
         double[] numbers2 = { 2.2 };

         IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

         foreach (double number in onlyInFirstSet)
            Console.WriteLine(number);
            Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim numbers1() As Double = {2.0, 2.1, 2.2, 2.3, 2.4, 2.5}
      Dim numbers2() As Double = {2.2}

      Dim onlyInFirstSet As IEnumerable(Of Double) = numbers1.Except(numbers2)

      Dim output As New System.Text.StringBuilder
	  
      For Each number As Double In onlyInFirstSet
         output.AppendLine(number)
         Console.WriteLine(number)
      Next
	  
      Console.ReadLine()
     
   End Sub
   
End Module

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

2
2.1
2.3
2.4
2.5

Exemplo de método Intersect - Enumerable.Intersect

C #

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

namespace Operators {
   class Program {
      static void Main(string[] args) {

         int[] id1 = { 44, 26, 92, 30, 71, 38 };
         int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };

         IEnumerable<int> both = id1.Intersect(id2);

         foreach (int id in both)
            Console.WriteLine(id);
            Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
      Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}

      Dim intersection As IEnumerable(Of Integer) = id1.Intersect(id2)

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

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

26
30

Exemplo de Union - Enumerable.Union Method

C #

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

namespace Operators {
   class Program {
      static void Main(string[] args) {
      
         int[] ints1 = { 5, 3, 9, 7, 5, 9, 3, 7 };
         int[] ints2 = { 8, 3, 6, 4, 4, 9, 1, 0 };

         IEnumerable<int> union = ints1.Union(ints2);

         foreach (int num in union) {
            Console.Write("{0} ", num);
            Console.Write("\n");
         }
			
         Console.ReadLine();
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim ints1() As Integer = {5, 3, 9, 7, 5, 9, 3, 7}
      Dim ints2() As Integer = {8, 3, 6, 4, 4, 9, 1, 0}

      Dim union As IEnumerable(Of Integer) = ints1.Union(ints2)

      Dim output As New System.Text.StringBuilder
	  
      For Each num As Integer In union
         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 -

5
3 
9 
7 
8 
6 
4 
1 
0