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:
- Unión
- Intersecarse
- Excepto
- 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