Sobes.tech
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 όταν αναμένετε ακριβώς ένα στοιχείο και θέλετε να λάβετε σφάλμα αν υπάρχουν περισσότερα.