Whenever you use SingleOrDefault
, you clearly state that the query should result in at most asingle result. On the other hand, when FirstOrDefault
is used, the query can return any amount of results but you state that you only want the first one.
I personally find the semantics very different and using the appropriate one, depending on the expected results, improves readability.
A very important difference is that if you use SingleOrDefault on a sequence with more than one element, it throws an exception.