Maison > développement back-end > C++ > .First () vs. .FirstorDefault () dans linq: Quand dois-je utiliser chacun?

.First () vs. .FirstorDefault () dans linq: Quand dois-je utiliser chacun?

Susan Sarandon
Libérer: 2025-01-26 10:51:10
original
694 Les gens l'ont consulté

.First() vs. .FirstOrDefault() in LINQ: When Should I Use Each?

Scénarios d'utilisation de First() et FirstOrDefault() dans LINQ

Les méthodes

LINQ .First() et .FirstOrDefault() sont fonctionnellement similaires mais se comportent légèrement différemment. Examinons les scénarios dans lesquels chaque méthode est adaptée.

Quand utiliser .First()

Utilisez .First() si vous êtes sûr que la séquence contiendra toujours au moins un élément. Il renverra le premier élément correspondant. Si aucun élément correspondant n'est trouvé, une exception "InvalidOperationException" sera levée. Cette méthode convient lorsqu'une séquence vide constitue une exception.

Quand utiliser .FirstOrDefault()

Utilisez .FirstOrDefault() si la séquence peut être vide ou devrait être vide. S'il existe un élément correspondant, il renvoie le premier élément correspondant ; sinon, il renvoie la valeur par défaut du type d'élément. Cette méthode doit être utilisée lorsqu'une séquence vide est un cas valide.

Quand utiliser .Take(1)

La méthode

.Take(1) est similaire à .First(), mais avec une différence clé. Il ne renvoie pas l'élément lui-même, mais une séquence contenant exactement un élément. Cette distinction devient importante lorsqu’il s’agit de séquences de types valeur.

Exemple

Considérez la séquence suivante :

var list = new List<int> { 1, 2, 3 };
Copier après la connexion

Utilisez .First() :

int result = list.Where(x => x % 2 == 0).First();
Copier après la connexion

Comme il y a un nombre pair (2) dans la séquence, ce code renverra la valeur 2. S'il n'y a pas de nombre pair, une exception sera levée.

Utilisez .FirstOrDefault() :

int result = list.Where(x => x % 2 == 4).FirstOrDefault();
Copier après la connexion

Dans ce cas, aucun nombre pair ne correspond au prédicat, donc .FirstOrDefault() renvoie la valeur par défaut d'un entier, qui est 0.

Utilisez .Take(1) :

var result = list.Where(x => x % 2 == 0).Take(1);
Copier après la connexion

Ce code renvoie une séquence contenant l'unique élément 2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal