SingleOrDefault vs. FirstOrDefault in LINQ

The LINQ (Language Integrated Query) has the extension methods SingleOrDefault and FirstOrDefault . What is the difference between SingleOrDefault and FirstOrDefault in LINQ.

In one of my previous blog post , I wrote about .First() throws Error in LINQ or Entity Framework Queries which explains the use of FirstOrDefault in LINQ.

But , there is also a extension method SingleOrDefault() in LINQ .

Examples and demonstration of SingleOrDefault() and FirstOrDefault() in LINQ

The Below example illustrates the usage of SingleOrDefault() and FirstOrDefault()

public class Movie

{

public string MovieName { get; set; }

public string Actor { get; set; }

public string Director { get; set; }

public string Boxoffice { get; set; }

}

public class Movies : List<Movie>

{

public Movies()

{

Add(new Movie { Actor = "Vijay", Director = "Murugadas", MovieName = "Thuppaki" });

Add(new Movie { Actor = "Ajith Kumar", Director = "Chakri", MovieName = "Billa 2" });

Add(new Movie { Actor = "Vijay", Director = "Shankar", MovieName = "Nanban" });

Add(new Movie { Actor = "Surya", Director = "KV Anand", MovieName = "Maatran" });

Add(new Movie { Actor = "Vijay", Director = "Jayam Raja", MovieName = "Velayutham" });

}

}

private void Form1_Load(object sender, EventArgs e)

{

List<Movie> movies = new Movies();

var data = movies.FirstOrDefault(a => a.Actor == "Vijay");

var data1 = movies.SingleOrDefault(a => a.Actor == "Vijay");

}

What is the difference between SingleOrDefault and FirstOrDefault in LINQ ?

The SingleOrDefault states that the query should return only single result whereas FirstOrDefault can return multiple result but the developer can specify that only the first one will be picked.

If the result set returns more than one record , SingleOrDefault throws “Invalid Operations Exception” – Sequence contains more than one matching element as described in the below screenshot.

SingleOrDefault vs. FirstOrDefault in LINQ

SingleOrDefault vs. FirstOrDefault in LINQ

Both SingleOrDefault and FirstOrDefault returns the default value for the type if the result of the query is 0 records.

Leave A Reply

Your email address will not be published. Required fields are marked *

You May Also Like

This C# program calculates and displays an upper triangular matrix based on user input. Problem Statement: The program takes the...
This C# program serves as a demonstration of bitwise operators, which are fundamental operators used for manipulating individual bits in...
This C# program is designed to interchange or swap the columns of a matrix. A matrix is a two-dimensional array...