Sobes.tech
Junior — Middle

Quelles sont les différences entre les méthodes FirstOrDefault et SingleOrDefault en LINQ?

sobes.tech IA

Réponse de l'IA

Dans LINQ, les méthodes FirstOrDefault et SingleOrDefault sont utilisées pour sélectionner des éléments d'une séquence, mais ont des sémantiques différentes :

  • FirstOrDefault retourne le premier élément de la séquence, s'il existe, sinon retourne la valeur par défaut (null pour les types de référence).
  • SingleOrDefault retourne l'unique élément de la séquence, s'il y en a exactement un, sinon :
    • Si aucun élément, retourne la valeur par défaut.
    • Si plus d'un élément, lance une exception InvalidOperationException.

Exemple :

var numbers = new List<int> { 1, 2, 3 };

var first = numbers.FirstOrDefault(); // renverra 1
var single = numbers.SingleOrDefault(); // lancera une exception, car il y a plus d'un élément

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // renverra 0 (par défaut pour int)
var singleEmpty = empty.SingleOrDefault(); // aussi renverra 0

var singleItem = new List<int> { 42 };

var singleValue = singleItem.SingleOrDefault(); // renverra 42

En résumé :

  • Utilisez FirstOrDefault lorsque vous souhaitez obtenir le premier élément ou null s'il n'y en a pas.
  • Utilisez SingleOrDefault lorsque vous attendez exactement un élément et souhaitez obtenir une erreur s'il y en a plus d'un.