.Net
LINQ Single vs SingleOrDefault vs First vs FirstOrDefault
SINGLE() | SINGLEORDEFAULT() | FIRST() | FIRSTORDEFAULT() | |
DESCRIPTION | Returns a single, specific element of a sequence | Returns a single, specific element of a sequence, or a default value if that element is not found | Returns the first element of a sequence | Returns the first element of a sequence, or a default value if no element is found |
EXCEPTION THROWN | There are 0 or more than 1 elements in the result | There is more than one element in the result | There are no elements in the result | Only if the source is null (they all do this) |
WHEN TO USE | If exactly 1 element is expected; not 0 or more than 1 | When 0 or 1 elements are expected | When more than 1 element is expected and you want only the first | When more than 1 element is expected and you want only the first. Also it is ok for the result to be empty |
Single(), SingleOrDefault(), First() and FirstOrDefault() are extension methods of the Enumerable class.