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 único o predeterminado
El operador SingleOrDefault se utiliza para devolver el único elemento de la colección o secuencia. Básicamente, devuelve el único elemento que especifica la condición dada. O devolver el valor predeterminado si la colección o secuencia dada no contiene ningún valor. Este método se puede sobrecargar de dos maneras diferentes:
- SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>): este método devuelve el único elemento de la colección o secuencia que especifica la condición dada y generará una excepción si existe más de un elemento que especifica la condición dada .
- SingleOrDefault<TSource>(IEnumerable<TSource>): este método devuelve el único elemento de una secuencia o colección determinada y genera una excepción si hay más de un elemento presente en la secuencia o colección.
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.
- Lanza una InvalidOperationException si contiene más de un elemento que especifica la condición dada o más de un elemento presente en la secuencia o colección dada.
- El valor predeterminado de los tipos de referencia y los tipos anulables es nulo.
Ejemplo 1:
// C# program to illustrate the use // of SingleOrDefault operator using System; using System.Linq; using System.Collections.Generic; class GFG { // Main Method static public void Main() { // Data source int[] sequence1 = {112, 44, 55, 66, 77, 777, 56}; int[] sequence2 = {2 }; int[] sequence3 = {}; // Get the element which specifies // the given condition Using the // SingleOrDefault(Condition) var result1 = sequence1.SingleOrDefault(seq => seq == 777); Console.WriteLine("Element: {0}", result1); // Get the only element of the sequence // Using SingleOrDefault() var result2 = sequence2.SingleOrDefault(); Console.WriteLine("Element: {0}", result2); // Get the default value // Using SingleOrDefault() var result3 = sequence3.SingleOrDefault(); Console.WriteLine("Element: {0}", result3); } }
Element: 777 Element: 2 Element: 0
Ejemplo 2:
// C# program to find the name the employee // whose salary is equal to 50000 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 = "Anupriya", emp_gender = "Female", emp_hire_date = "17/6/2015", emp_salary = 50000}, }; // Query to find the name the employee // whose salary is equal to 50000 // Using SingleOrDefault method var res = emp.SingleOrDefault(e => e.emp_salary == 50000); string val = res.emp_name; Console.WriteLine("Employee name: {0}", val); } }
Employee name: Anupriya
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