<p>J’utiliserais <code>First()</code> quand je sais ou m’attends à ce que la séquence ait au moins un élément. Autrement dit, quand il est exceptionnel que la séquence soit vide.</p>
<p>Utilisez <code>FirstOrDefault()</code> quand vous savez que vous devrez vérifier s’il y avait un élément ou non. Autrement dit, quand il est légitime que la séquence soit vide. Vous ne devriez pas compter sur la gestion des exceptions pour cette vérification. (C’est une mauvaise pratique et cela peut nuire aux performances).</p>
<p>Enfin, la différence entre <code>First()</code> et <code>Take(1)</code> est que <code>First()</code> retourne l’élément lui-même, tandis que <code>Take(1)</code> retourne une séquence d’éléments contenant exactement un élément.</p>