Single() / SingleOrDefault() |
First () / FirstOrDefault() |
Single(): There is exactly 1 result, an exception is thrown if no result is returned or more than one result.
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 result.
|
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 are sure there is only one record present in a database or you can say if you querying on a database with the help of the primary key of the table.
|
When to use?
Developers may use First () / FirstOrDefault() anywhere when they require a single value from a collection or database.
|
Single() or SingleOrDefault() will generate a regular TSQL like "SELECT ...". |
The First() or FirstOrDefault() method will generate the TSQL statement 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 a table contains a large number of columns and rows, at this time performance is noticeable. |