Middle
Ποια είναι η διαφορά μεταξύ των μεθόδων FirstOrDefault και SingleOrDefault;
sobes.tech AI
Απάντηση από AI
Το FirstOrDefault() επιστρέφει το πρώτο στοιχείο της ακολουθίας που ικανοποιεί την προϋπόθεση, ή μια προεπιλεγμένη τιμή (null για αναφορικούς τύπους, 0 για αριθμητικούς τύπους) αν τέτοια στοιχεία δεν υπάρχουν.
Το SingleOrDefault() επιστρέφει το μοναδικό στοιχείο της ακολουθίας που ικανοποιεί την προϋπόθεση, ή μια προεπιλεγμένη τιμή αν τέτοια στοιχεία δεν υπάρχουν. Αν υπάρχουν περισσότερα από ένα, ρίχνεται εξαίρεση InvalidOperationException.
| Χαρακτηριστικό | FirstOrDefault | SingleOrDefault |
|---|---|---|
| Βρέθηκαν 1+ στοιχεία | Επιστρέφει το πρώτο | Ρίχνει εξαίρεση |
| Δεν βρέθηκαν στοιχεία | Επιστρέφει την προεπιλεγμένη τιμή | Επιστρέφει την προεπιλεγμένη τιμή |
| Αναμενόμενος αριθμός | Μηδέν ή περισσότερα | Ακριβώς ένα |
// Παράδειγμα χρήσης του FirstOrDefault
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumber = numbers.FirstOrDefault(n => n % 2 == 0); // evenNumber θα είναι 2
var nonExistent = numbers.FirstOrDefault(n => n > 10); // nonExistent θα είναι 0
// Παράδειγμα χρήσης του SingleOrDefault
var singleNumber = new List<int> { 7 };
var result = singleNumber.SingleOrDefault(); // result θα είναι 7
var emptyList = new List<int>();
var defaultValue = emptyList.SingleOrDefault(); // defaultValue θα είναι 0
var multipleNumbers = new List<int> { 1, 2, 3 };
// var error = multipleNumbers.SingleOrDefault(); // Αυτή η γραμμή θα ρίξει InvalidOperationException