Many people get confused about the difference between Single, SingleOrDefault, First, and FirstOrDefaultmethods in Linq. Below is a chart explaining the difference between them and examples of each scenario.
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 when | 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 |
0 Comments