โดยทั่วไปเมื่อฉันทำแบบสอบถามต่อไปนี้หากไม่มีโอกาสในการขายตรงกับแบบสอบถามต่อไปนี้จะโยนข้อยกเว้น ในกรณีนี้ฉันต้องการให้ผลรวมเท่ากับ 0 มากกว่าข้อยกเว้นที่ถูกส่งออกไป สิ่งนี้จะเป็นไปได้ในแบบสอบถามเอง - ฉันหมายถึงแทนที่จะเก็บแบบสอบถามและตรวจสอบอยู่query.Any()
ใช่ไหม
double earnings = db.Leads.Where(l => l.Date.Day == date.Day
&& l.Date.Month == date.Month
&& l.Date.Year == date.Year
&& l.Property.Type == ProtectedPropertyType.Password
&& l.Property.PropertyId == PropertyId).Sum(l => l.Amount);
SQL
สร้างขึ้น Amount
ไม่ใช่ความจริงnull
มันเป็นปัญหาที่ล้อมรอบวิธีจัดการผลลัพธ์เป็นศูนย์ ดูคำตอบที่ให้ไว้
decimal
decimal
ลืมไปเลยว่าคุณเคยรู้จักfloat
และเคยdouble
ทำงานด้านการเขียนโปรแกรมมาแล้วจนกระทั่งวันที่มีคนบอกให้คุณใช้มันเพื่อสถิติหรือความส่องสว่างของดาวหรือผลลัพธ์ของกระบวนการสุ่มหรือการประจุอิเล็กตรอน! จนแล้วคุณกำลังทำมันผิด
Where
จะไม่กลับมาnull
ถ้ามันไม่พบระเบียนใด ๆ ก็จะกลับรายการของศูนย์รายการ ข้อยกเว้นคืออะไร