Junior — Middle
Millised on erinevused meetodite FirstOrDefault ja SingleOrDefault vahel LINQ-is?
sobes.tech AI
Vastus AI-lt
LINQ meetodid FirstOrDefault ja SingleOrDefault kasutatakse elementide valimiseks järjestusest, kuid neil on erinevad semantika:
FirstOrDefaulttagastab esimese elemendi järjestusest, kui see on olemas, vastasel juhul tagastab vaikimisi väärtuse (null viidetüüpi jaoks).SingleOrDefaulttagastab ainuüksi ühe elemendi järjestusest, kui on täpselt üks, vastasel juhul:- Kui elemente pole, tagastab vaikimisi väärtuse.
- Kui on rohkem kui üks, viskab välja
InvalidOperationException.
Näide:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // tagastab 1
var single = numbers.SingleOrDefault(); // viskab välja erandi, kuna on rohkem kui üks element
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // tagastab 0 (vaikimisi int jaoks)
var singleEmpty = empty.SingleOrDefault(); // samuti 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // tagastab 42
Kokkuvõte:
- Kasutage
FirstOrDefault, kui soovite saada esimese elementi või null, kui elemente pole. - Kasutage
SingleOrDefault, kui ootate täpselt ühte elementi ja soovite saada vea, kui neid on rohkem.