Los operadores de elementos se utilizan para devolver un elemento único o específico de la secuencia o colección. Por ejemplo, en una escuela cuando preguntamos, ¿quién es el director? Entonces habrá una sola persona que será el director de la escuela. Entonces el número de alumnos es una colección y el principal es el único resultado que sale de la colección.
El operador de consulta estándar de LINQ admite 8 tipos de operadores de elementos:
- elemento en
- ElementAtOrDefault
- Primero
- primero o predeterminado
- Ultimo
- último o predeterminado
- Único
- Único o predeterminado
Operador FirstOrDefault
El operador FirstOrDefault se usa para devolver el primer elemento de la colección o secuencia dada. O también puede devolver el primer elemento según la condición dada. Y proporciona un valor predeterminado si la colección o secuencia dada no contiene ningún elemento o si la colección o secuencia no contiene el elemento que especifica la condición dada. O podemos decir que el operador FirstOrDefault se crea para superar el problema InvalidOperationException del primer operador. Este método se puede sobrecargar de dos maneras diferentes:
- FirstOrDefault<TSource>(IEnumerable<TSource>): este método devuelve el primer elemento de la secuencia o colección dada sin ninguna condición. O devuelve el valor predeterminado si la colección o secuencia dada no contiene ningún elemento.
- FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>): este método devuelve el primer elemento que especifica la condición dada. O devuelve el valor predeterminado si la colección no contiene el elemento que especifica la condición dada.
Puntos importantes:
- 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.
- Si la colección dada contiene un elemento nulo, este método generará una ArgumentNullException.
- El valor predeterminado de los tipos de referencia y los tipos anulables es nulo.
Ejemplo 1:
// C# program to illustrate the // use of FirstOrDefault operator using System; using System.Linq; using System.Collections.Generic; class GFG { static public void Main() { // Data source int[] sequence1 = {112, 44, 55, 66, 77, 777, 56}; // Get the element which specifies // the given condition // Using FirstOrDefault function var result1 = sequence1.FirstOrDefault(seq => seq < 77); Console.WriteLine("Value: {0}", result1); // Getting Default value because the // sequence does not contain any element int[] sequence2 = {}; var result2 = sequence2.FirstOrDefault(); Console.WriteLine("Default value: {0}", result2); } }
Value: 44 Default value: 0
Ejemplo 2:
// C# program to find the name // of the first employee 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}, }; // Query to find the name the first // employee Using FirstOrDefault method var res = emp.Select(e => e.emp_name).FirstOrDefault(); Console.WriteLine("Employee Name: {0}", res); } }
Employee Name: Anjita
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