ฉันค้นหาไปรอบ ๆ แล้วและไม่พบคำตอบที่ชัดเจนว่าเมื่อใดที่คุณต้องการใช้.Firstและเมื่อคุณต้องการใช้.FirstOrDefaultกับ LINQ
คุณต้องการใช้เมื่อ
.Firstใด เฉพาะเมื่อคุณต้องการตรวจสอบข้อยกเว้นหากไม่มีผลลัพธ์ที่ส่งคืนvar result = List.Where(x => x == "foo").First();และคุณต้องการใช้เมื่อ
.FirstOrDefaultใด เมื่อใดที่คุณต้องการประเภทเริ่มต้นหากไม่มีผลลัพธ์var result = List.Where(x => x == "foo").FirstOrDefault();และสำหรับเรื่องนั้นสิ่งที่เกี่ยวกับ Take?
var result = List.Where(x => x == "foo").Take(1);
Single SingleOrDefaultฉันเกลียดเมื่อมีคนใช้Firstเมื่อพวกเขาหมายถึงจริง ๆSingle; )
.FirstOrDefault()เสมอเปิดโอกาสให้คุณโยนข้อยกเว้นที่มีความหมายมากขึ้น หากมีการโยนข้อยกเว้นตามลำดับและมีมากกว่าหนึ่งรายการ.First()ในวิธีการหนึ่งอาจเป็นการยากที่จะแยกแยะว่าคำสั่งใดเป็นปัญหา


.Firstและ.FirstOrDefaultทั้งคู่ใช้ภาคแสดงเป็นข้อโต้แย้งดังนั้นvar result = List.Where(x => x == "foo").First();สามารถเขียนใหม่เป็นvar result = List.First(x => x == "foo");