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:
FirstOrDefaultatgriež pirmo elementu secībā, ja tas ir, citādi atgriež noklusējuma vērtību (null saistītajiem tipiem).SingleOrDefaultatgriež 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.