Search This Blog

Thursday, July 11, 2019

Difference Between First() and FirstOrDefault() in LINQ

First()
Member
IDNameYearAddressIncomeUserName
1PQR2010-2011C50000S123
2PQR2012-2013C180000S123
3XYZ2013-2014B200000S789
4ABC2013-2014A350000S253

Var x=(from m in Member  
Where m.UserName=’S000’  
Select m.Name,m.Income,m.Year ).First()

In The Member table There Is no Such Record Which Will Match the expression so Above Query will Throw: InvalidOperationException: Sequence contains no elements

Var x=(from m in Member  
Where m.UserName=’s123’  

Select m.Name,m.Income,m.Year).First() 

Then You Will get The Result Like:

PQR2010-1150000S123

  1. First() returns First Element Of Sequence.
  2. First() throws Exception when There IS No element Presnt In Table.
FirstORDefault():

When we Use FirstORDefault () in LINQ in Query Syntax Or Method Syntax, At that Time If we Do not Get any Record Corresponding To Criteria in Where Clause then It Will return Some Default Value (Null)


Var x=(from m in Member  
Where m.UserName=’S000’  

Select m.Name,m.Income,m.Year ).FirstOrDefault() 

In The Member table There Is no Such Record Which Will Match the expression so Above Query will Return Default value as Null but Not An Exception

We Can Handle This Exception In C# by using try Catch like:


try  
{  
   Var x=(from m in Member  
   Where m.UserName=’S000’  
   Select m.Name,m.Income,m.Year ). FirstOrDefault ()  
   If(x!=null)  
   {  
       Console.WriteLine(x.Name);  
   }  
   else  
   {  
     Console.WriteLine("No Record Found");  
   }  
}  
catch (Exception ex)  
{  
   Console.WriteLine(ex.Message);  

}  

  1. FirstOrDefault () returns First Element Of Sequence.
  2. FirstOrDefault () does not throws Exception when There IS No element Present in Table.

No comments :