Sobes.tech
Junior — Middle

Kāda ir atšķirība starp metodēm FirstOrDefault un SingleOrDefault LINQ?

sobes.tech AI

Atbilde no AI

LINQ metodēs FirstOrDefault un SingleOrDefault tiek izmantotas, lai izvēlētos elementus no secības, bet tām ir dažādas semantikas:

  • FirstOrDefault atgriež pirmo elementu secībā, ja tas ir, citādi atgriež noklusējuma vērtību (null saistītajiem tipiem).
  • SingleOrDefault atgriež vienīgo elementu secībā, ja ir tieši viens, citādi:
    • Ja elementu nav, atgriež noklusējuma vērtību.
    • Ja ir vairāk nekā viens, izmet izņēmumu InvalidOperationException.

Piemērs:

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

var first = numbers.FirstOrDefault(); // atgriezīs 1
var single = numbers.SingleOrDefault(); // izmetīs izņēmumu, jo ir vairāk nekā viens elements

var empty = new List<int>();

var firstEmpty = empty.FirstOrDefault(); // atgriezīs 0 (noklusējuma int)
var singleEmpty = empty.SingleOrDefault(); // arī 0

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

var singleValue = singleItem.SingleOrDefault(); // atgriezīs 42

Kopsavilkums:

  • Izmantojiet FirstOrDefault, ja vēlaties iegūt pirmo elementu vai null, ja elementu nav.
  • Izmantojiet SingleOrDefault, ja sagaidāt tieši vienu elementu un vēlaties saņemt kļūdu, ja ir vairāk nekā viens.