Los operadores de generación se utilizan para crear una nueva secuencia de valores. El operador de consulta estándar admite 4 tipos diferentes de operadores de generación:
- predeterminado si está vacío
- Vacío
- Rango
- Repetir
Operador DefaultIfEmpty
El operador DefaultIfEmpty se usa para reemplazar una colección o secuencia vacía con una colección o secuencia de singleton con valores predeterminados. O en otras palabras, devuelve una colección o secuencia con valores predeterminados si la fuente está vacía, de lo contrario, devuelve la fuente.
- Este operador se sobrecarga de dos maneras diferentes:
- DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource): este método se usa para devolver los elementos de la secuencia especificada o el valor especificado en una colección singleton si la secuencia está vacía.
- DefaultIfEmpty<TSource>(IEnumerable<TSource>): este método se usa para devolver los elementos de la secuencia especificada o el valor predeterminado del parámetro de tipo en una colección singleton si la secuencia está vacía.
- No es compatible con la sintaxis de consulta en los lenguajes C# y VB.Net.
- 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.
- DefaultIfEmpty<TSource>(IEnumerable<TSource>) devolverá ArgumentNullException si la fuente dada es nula.
- El valor predeterminado para los tipos de referencia y para los tipos que aceptan valores NULL es nulo.
Ejemplo 1:
// C# program to illustrate the // use of DefaultIfEmpty operator using System; using System.Linq; using System.Collections.Generic; class GFG { static public void Main() { // Data source 1 int[] sequence1 = {}; // The sequence is empty so it // will return the default value // Using DefaultIfEmpty foreach(var val1 in sequence1.DefaultIfEmpty()) { Console.WriteLine(val1); } // Data source 2 string[] sequence2 = {"Geek", "Geeks123", "GeeksforGeeks"}; // The given sequence 2 is non-empty so // it will return the sequence // Using DefaultIfEmpty foreach(var val2 in sequence2.DefaultIfEmpty()) { Console.WriteLine(val2); } } }
Producción:
0 Geek Geeks123 GeeksforGeeks
Ejemplo 2:
// C# program to illustrate the // use of DefaultIfEmpty operator using System; using System.Linq; using System.Collections.Generic; // Employee details public class Employee { public int emp_id { get; set; } public string emp_name { get; set; } public string emp_gender { get; set; } public string emp_hire_date { get; set; } public int emp_salary { get; set; } } class GFG { // Main method static public void Main() { List<Employee> emp = new List<Employee>() { new Employee() {emp_id = 209, emp_name = "Anjita", emp_gender = "Female", emp_hire_date = "12/3/2017", emp_salary = 20000}, new Employee() {emp_id = 210, emp_name = "Soniya", emp_gender = "Female", emp_hire_date = "22/4/2018", emp_salary = 30000}, new Employee() {emp_id = 211, emp_name = "Rohit", emp_gender = "Male", emp_hire_date = "3/5/2016", emp_salary = 40000}, new Employee() {emp_id = 212, emp_name = "Supriya", emp_gender = "Female", emp_hire_date = "4/8/2017", emp_salary = 40000}, new Employee() {emp_id = 213, emp_name = "Anil", emp_gender = "Male", emp_hire_date = "12/1/2016", emp_salary = 40000}, new Employee() {emp_id = 214, emp_name = "Anju", emp_gender = "Female", emp_hire_date = "17/6/2015", emp_salary = 50000}, }; // Using DefaultIfEmpty operator foreach(Employee e in emp.DefaultIfEmpty()) { Console.WriteLine(e.emp_name); } } }
Producción:
Anjita Soniya Rohit Supriya Anil Anju
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