Single() / SingleOrDefault()
First () / FirstOrDefault()
Single() - There is exactly 1
result, an exception is thrown if no result is returned or more than one
SingleOrDefault() – Same as
Single(), but it can handle the null value.
First() - There is at least one
result, an exception is thrown if no result is returned.
FirstOrDefault() - Same as
First(), but not thrown any exception or return null when there is no
Single() asserts that one and only one
element exists in the sequence.
First() simply gives you the first one.
When to use
Use Single / SingleOrDefault() when you
sure there is only one record present in database or you can say if you
querying on database with help of primary key of table.
When to use
Developer may use First () /
FirstOrDefault() anywhere, when they required single value from
collection or database.
Single() or SingleOrDefault() will
generate a regular TSQL like "SELECT ...".
The First() or FirstOrDefault() method
will generate the TSQL statment like "SELECT TOP 1..."
In the case of Fist / FirstOrDefault,
only one row is retrieved from the database so it performs slightly
better than single / SingleOrDefault. such a small difference is hardly
noticeable but when table contain large number of column and row, at
this time performance is noticeable.