LINQ | Operador de Generación | Predeterminado si está vacío

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:

  1. predeterminado si está vacío
  2. Vacío
  3. Rango
  4. 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

Deja una respuesta

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