ฉันค้นหาไปรอบ ๆ แล้วและไม่พบคำตอบที่ชัดเจนว่าเมื่อใดที่คุณต้องการใช้.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");