C# Linq Where(expression).FirstorDefault() vs .FirstOrDefault(expression)

Solution 1:

Either is fine.

They both run lazily - if the source list has a million items, but the tenth item matches then both will only iterate 10 items from the source.

Performance should be almost identical and any difference would be totally insignificant.

Solution 2:

The second one. All other things being equal, the iterator in the second case can stop as soon as it finds a match, where the first one must find all that match, and then pick the first of those.