LINQ | Establecer operador | Excepto

En LINQ, los operadores de conjunto son aquellos operadores en la expresión de consulta que devuelven un conjunto de resultados basado en la existencia o inexistencia de los elementos equivalentes dentro de las mismas o diferentes colecciones, secuencias o conjuntos. El operador de consulta estándar contiene los siguientes operadores de conjunto:

  1. Unión
  2. Intersecarse
  3. Excepto
  4. Distinto

Excepto Operador

El operador Excepto devuelve la diferencia establecida. O dicho de otro modo, podemos decir que devuelve el conjunto o colección que contiene los elementos que no aparecen en la segunda colección o conjunto.

  • No es compatible con la sintaxis de consultas en los lenguajes C# y VB.Net. Pero puede usar el método Except en la variable de consulta o puede envolver su consulta entre paréntesis y luego llamar al método Except.
  • Admite la sintaxis del método en los lenguajes C# y VB.Net.
  • Está presente tanto en la clase Queryable como en la Enumerable.
  • Se implementa mediante el uso de ejecución diferida.
  • Cuando trabaje con colecciones de tipos complejos, debe usar la interfaz IEqualityComparer; de lo contrario, el método Except le dará un resultado incorrecto.

Ejemplo 1:

// C# program to find the difference
// of the given sequences
using System;
using System.Linq;
  
class GFG {
  
    static public void Main()
    {
  
        // Data source
        char[] sequence1 = {'m', 'q', 'o', 's', 'y', 'a'};
        char[] sequence2 = {'p', 't', 'r', 's', 'y', 'z'};
  
        // Display the sequences
        Console.WriteLine("Sequence 1 is: ");
  
        foreach(var s1 in sequence1)
        {
            Console.WriteLine(s1);
        }
  
        Console.WriteLine("Sequence 2 is: ");
  
        foreach(var s2 in sequence2)
        {
            Console.WriteLine(s2);
        }
  
        // Get the difference of the given 
        // sequences Using Except function
        var result = sequence1.Except(sequence2);
  
        Console.WriteLine("New Sequence: ");
  
        foreach(var val in result)
        {
            Console.WriteLine(val);
        }
    }
}
Producción:

Sequence 1 is: 
m
q
o
s
y
a
Sequence 2 is: 
p
t
r
s
y
z
New Sequence: 
m
q
o
a

Ejemplo 2:

// C# program to find the languages which is 
// not known by employees of the Department 2
using System;
using System.Linq;
using System.Collections.Generic;
  
// Employee details
// Department 1
public class Employee1 {
  
    public int emp_id1
    {
        get;
        set;
    }
  
    public string emp_name1
    {
        get;
        set;
    }
    public string emp_lang1
    {
        get;
        set;
    }
}
  
// Employee details
// Department 2
public class Employee2 {
  
    public int emp_id2
    {
        get;
        set;
    }
  
    public string emp_name2
    {
        get;
        set;
    }
    public string emp_lang2
    {
        get;
        set;
    }
}
  
public class GFG {
  
    // Main method
    static public void Main()
    {
        List<Employee1> emp1 = new List<Employee1>() {
  
            new Employee1() {emp_id1 = 209, emp_name1 = "Anjita",
                                               emp_lang1 = "C#"},
  
            new Employee1() {emp_id1 = 210, emp_name1 = "Soniya",
                                                emp_lang1 = "C"},
  
            new Employee1() {emp_id1 = 211, emp_name1 = "Rohit",
                                            emp_lang1 = "Java"},
  
        };
  
        List<Employee2> emp2 = new List<Employee2>() {
  
            new Employee2() {emp_id2 = 290, emp_name2 = "Anjita",
                                               emp_lang2 = "C#"},
  
            new Employee2() {emp_id2 = 212, emp_name2 = "MaMa",
                                         emp_lang2 = "Python"},
  
            new Employee2() {emp_id2 = 233, emp_name2 = "Rima",
                                           emp_lang2 = "Java"},
  
        };
  
        // Query to find the languages that is not
        // known by employees of the department 2
        // Using Except method
        var res = emp1.Select(e => e.emp_lang1).Except(emp2.Select(e => e.emp_lang2));
          
        Console.WriteLine("Language: ");
          
        foreach(var val in res)
        {
            Console.WriteLine(val);
        }
    }
}
Producción:

Language: 
C

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *