Sobes.tech
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:

  • FirstOrDefault tagastab esimese elemendi järjestusest, kui see on olemas, vastasel juhul tagastab vaikimisi väärtuse (null viidetüüpi jaoks).
  • SingleOrDefault tagastab 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.