Establecer operaciones en LINQ

Hay cuatro operadores para las operaciones establecidas, cada uno de los cuales produce un resultado basado en diferentes criterios.

Operador Descripción Sintaxis de expresión de consulta de C # Sintaxis de expresión de consulta de VB
Distinto Da como resultado una lista de valores únicos de una colección al filtrar los datos duplicados, si los hay No aplica Distinto
Excepto Compara los valores de dos colecciones y devuelve los de una colección que no están en la otra colección No aplica No aplica
Intersecarse Devuelve el conjunto de valores encontrados t ser idénticos en dos colecciones separadas No aplica No aplica
Unión Combina el contenido de dos colecciones diferentes en una sola lista que también sin ningún contenido duplicado No aplica No aplica

Ejemplo de expresión distinta: 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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

The distinct grades are: 63 68 71 75 92

Ejemplo 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

Cuando el código anterior de C # o VB se compila y ejecuta, produce el siguiente resultado:

2
2.1
2.3
2.4
2.5

Ejemplo de Intersect - Método 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

Cuando el código anterior de C # o VB se compila y ejecuta, produce el siguiente resultado:

26
30

Ejemplo de unión: método de unión enumerable

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

Cuando el código anterior de C # o VB se compila y ejecuta, produce el siguiente resultado:

5
3 
9 
7 
8 
6 
4 
1 
0