IEnumerable विस्तार के तरीकों पर विचार करें SingleOrDefault()
औरFirstOrDefault()
MSDN दस्तावेज़ जोSingleOrDefault
:
अनुक्रम खाली होने पर अनुक्रम का एकमात्र तत्व या डिफ़ॉल्ट मान लौटाता है; यदि अनुक्रम में एक से अधिक तत्व हैं, तो यह विधि एक अपवाद को फेंकती है।
जबकि FirstOrDefault
से MSDN (संभवतः जब एक का उपयोग कर OrderBy()
या OrderByDescending()
बिल्कुल भी या नहीं),
किसी अनुक्रम का पहला तत्व देता है
मुट्ठी भर उदाहरण प्रश्नों पर विचार करें, यह स्पष्ट नहीं है कि इन दो विधियों का उपयोग कब करना है:
var someCust = db.Customers
.SingleOrDefault(c=>c.ID == 5); //unlikely(?) to be more than one, but technically COULD BE
var bobbyCust = db.Customers
.FirstOrDefault(c=>c.FirstName == "Bobby"); //clearly could be one or many, so use First?
var latestCust = db.Customers
.OrderByDescending(x=> x.CreatedOn)
.FirstOrDefault();//Single or First, or does it matter?
सवाल
आप क्या परंपराओं का पालन या सुझाव है है जब उपयोग के लिए निर्णय लेने SingleOrDefault()
और FirstOrDefault()
अपने LINQ प्रश्नों में?