Maison >développement back-end >C++ >.First () vs. .FirstorDefault () dans linq: Quand dois-je utiliser chacun?
Scénarios d'utilisation de First() et FirstOrDefault() dans LINQ
Les méthodesLINQ .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 :
<code class="language-csharp">var list = new List<int> { 1, 2, 3 };</code>
Utilisez .First() :
<code class="language-csharp">int result = list.Where(x => x % 2 == 0).First();</code>
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() :
<code class="language-csharp">int result = list.Where(x => x % 2 == 4).FirstOrDefault();</code>
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) :
<code class="language-csharp">var result = list.Where(x => x % 2 == 0).Take(1);</code>
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!