Verwendungsszenarien von First() und FirstOrDefault() in LINQ
Die Methoden .First()
und .FirstOrDefault()
von LINQ sind funktional ähnlich, verhalten sich jedoch etwas anders. Schauen wir uns die Szenarien an, in denen die einzelnen Methoden geeignet sind.
Wann .First() verwendet werden sollte
Verwenden Sie .First()
, wenn Sie sicher sind, dass die Sequenz immer mindestens ein Element enthält. Es wird das erste passende Element zurückgegeben. Wenn kein passendes Element gefunden wird, wird eine „InvalidOperationException“-Ausnahme ausgelöst. Diese Methode eignet sich, wenn eine leere Sequenz eine Ausnahme darstellt.
Wann .FirstOrDefault() verwendet werden sollte
Verwenden Sie .FirstOrDefault()
, wenn die Sequenz möglicherweise leer ist oder leer sein soll. Wenn ein passendes Element vorhanden ist, wird das erste passende Element zurückgegeben. Andernfalls wird der Standardwert für den Elementtyp zurückgegeben. Diese Methode sollte verwendet werden, wenn eine leere Sequenz ein gültiger Fall ist.
Wann .Take(1) verwendet werden sollte
Die.Take(1)
-Methode ähnelt .First()
, weist jedoch einen wesentlichen Unterschied auf. Es wird nicht das Element selbst zurückgegeben, sondern eine Sequenz, die genau ein Element enthält. Diese Unterscheidung wird wichtig, wenn es um Folgen von Werttypen geht.
Beispiel
Bedenken Sie die folgende Reihenfolge:
<code class="language-csharp">var list = new List<int> { 1, 2, 3 };</code>
Verwenden Sie .First():
<code class="language-csharp">int result = list.Where(x => x % 2 == 0).First();</code>
Da es in der Sequenz eine gerade Zahl (2) gibt, gibt dieser Code den Wert 2 zurück. Wenn keine gerade Zahl vorhanden ist, wird eine Ausnahme ausgelöst.
Verwenden Sie .FirstOrDefault():
<code class="language-csharp">int result = list.Where(x => x % 2 == 4).FirstOrDefault();</code>
In diesem Fall stimmt keine gerade Zahl mit dem Prädikat überein, daher gibt .FirstOrDefault()
den Standardwert einer Ganzzahl zurück, der 0 ist.
Verwenden Sie .Take(1):
<code class="language-csharp">var result = list.Where(x => x % 2 == 0).Take(1);</code>
Dieser Code gibt eine Sequenz zurück, die das einzelne Element 2 enthält.
Das obige ist der detaillierte Inhalt von.First() vs. .FirstOrDefault() in LINQ: Wann sollte ich jedes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!