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, когато очаквате точно един елемент и искате да получите грешка, ако има повече от един.