2012-05-30 30 views
15

Tôi đang gặp sự cố với truy vấn này, nó phát ra lỗi.Loại truyền đến loại giá trị 'Thập phân' không thành công vì giá trị vật hoá là rỗng

var TotalToDatePayable = ( from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select ori.ExB4Taxes).Sum(); 

tôi đã cố gắng bên dưới mã từ another similar question nhưng điều đó đã không giải quyết vấn đề của tôi:

var TotalToDatePayable = (Decimal?)( from ori in db.GetAll<WMPORI>() 
             where ori.CTMSysID == ctmSysId 
            select ori.ExB4Taxes).Sum()) ?? 0; 
+0

này đang làm việc: var TotalToDatePayable = (từ ori trong db.GetAll () nơi ori.CTMSysID == ctmSysId chọn ori.ExB4Taxes) .DefaultIfEmpty (0) .Sum(); – Developer

+0

@DmitryBychenko Tôi nghĩ rằng loại thụt lề đã được độc quyền cho Objective C. Bây giờ tôi buồn. – Rawling

+0

@Rawling 9: loại thụt lề này là điển hình trong SQL (mà LINQ mô phỏng trong câu hỏi). Đó là lý do tôi thêm không gian. –

Trả lời

23

Bạn cần phải cast ori.ExB4Taxes-decimal? bên trong truy vấn.

var TotalToDatePayable = (from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select (Decimal?) ori.ExB4Taxes).Sum() ?? 0; 
+0

Bạn chỉ cần thêm 1 Dấu ngoặc đơn khác vào đầu truy vấn khác với việc nó hoạt động hoàn hảo. Cảm ơn. – Developer

Các vấn đề liên quan