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