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 :
FirstOrDefaultretourne 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).SingleOrDefaultretourne 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
FirstOrDefaultlorsque vous souhaitez obtenir le premier élément ou null s'il n'y en a pas. - Utilisez
SingleOrDefaultlorsque vous attendez exactement un élément et souhaitez obtenir une erreur s'il y en a plus d'un.