|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.