Sobes.tech
Junior — Middle

Какви са разликите между методите FirstOrDefault и SingleOrDefault в LINQ?

sobes.tech AI

Отговор от AI

В LINQ методите FirstOrDefault и SingleOrDefault се използват за избор на елементи от последователност, но имат различна семантика:

  • FirstOrDefault връща първия елемент от последователността, ако съществува, иначе връща стойността по подразбиране (null за референтни типове).
  • SingleOrDefault връща единствения елемент от последователността, ако има точно един, иначе:
    • Ако няма елементи, връща стойността по подразбиране.
    • Ако има повече от един, хвърля изключение InvalidOperationException.

Пример:

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

var first = numbers.FirstOrDefault(); // ще върне 1
var single = numbers.SingleOrDefault(); // ще хвърли изключение, защото има повече от един елемент

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // ще върне 0 (по подразбиране за int)
var singleEmpty = empty.SingleOrDefault(); // също ще върне 0

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

var singleValue = singleItem.SingleOrDefault(); // ще върне 42

Обобщение:

  • Използвайте FirstOrDefault, когато искате да получите първия елемент или null, ако няма елементи.
  • Използвайте SingleOrDefault, когато очаквате точно един елемент и искате да получите грешка, ако има повече от един.