The element operators are used to return a single, or a specific element from the sequence or collection. For example, in a school when we ask, who is the principal? Then there will be only one person that will be the principal of the school. So the number of students is a collection and the principal is the only result that comes from the collection.
The LINQ Standard Query Operator supports 8 types of element operators:
- ElementAt
- ElementAtOrDefault
- First
- FirstOrDefault
- Last
- LastOrDefault
- Single
- SingleOrDefault
ElementAtOrDefault Operator
The ElementAtOrDefault operator is used to return an element from the particular index from the given collection or sequence and it provides a default value if the index is out of range. It overcomes the ArgumentOutOfRangeException problem of the ElementAt operator.
- It does not support query syntax in C# and VB.Net languages.
- It support method syntax in both C# and VB.Net languages.
- It present in both the Queryable and Enumerable class.
- It does not throw an ArgumentOutOfRangeException when the index is out of range.
- The default value of the reference types and the nullable types is null.
Example 1:
// C# program to illustrate the use // of ElementAtOrDefault operator using System;
using System.Linq;
class GFG {
static public void Main()
{
// Data source
string [] sequence1 = { "Dog" , "Cat" , "Goat" , "Parrot" };
int [] sequence2 = {112, 44, 55, 66, 77, 777, 56};
// Get the element at the given index
// Using ElementAtOrDefault function
var result1 = sequence1.ElementAtOrDefault(2);
Console.WriteLine( "Element at index 2 in sequence 1: {0}" , result1);
var result2 = sequence1.ElementAtOrDefault(4);
Console.WriteLine( "Element at index 4 in sequence 1: {0}" , result2);
var result3 = sequence1.ElementAtOrDefault(6);
Console.WriteLine( "Element at index 6 in sequence 1: {0}" , result3);
var result4 = sequence2.ElementAtOrDefault(2);
Console.WriteLine( "Element at index 2 in sequence 2: {0}" , result4);
var result5 = sequence2.ElementAtOrDefault(5);
Console.WriteLine( "Element at index 5 in sequence 2: {0}" , result5);
var result6 = sequence2.ElementAtOrDefault(8);
Console.WriteLine( "Element at index 8 in sequence 2: {0}" , result6);
}
} |
Element at index 2 in sequence 1: Goat Element at index 4 in sequence 1: Element at index 6 in sequence 1: Element at index 2 in sequence 2: 55 Element at index 5 in sequence 2: 777 Element at index 8 in sequence 2: 0
Example 2:
// C# program to find the // ID of the 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 ID of
// the employee at index 3
// Using ElementAtOrDefault method
var res = emp.Select(e => e.emp_id).ElementAtOrDefault(3);
Console.WriteLine( "Employee ID: {0}" , res);
}
} |
Employee ID: 212