2012-05-30 3 views
15

मुझे इस क्वेरी के साथ कोई समस्या आ रही है, यह एक त्रुटि फेंक रहा है।मूल्य प्रकार 'दशमलव' कास्ट विफल हुआ क्योंकि भौतिक मान शून्य है

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

मैं another similar question से नीचे दिए गए कोड की कोशिश की लेकिन है कि मेरी समस्या का समाधान नहीं:

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

यह काम कर रहा है: var TotalToDatePayable = (ori से db.GetAll () जहां ori.CTMSysID == ctmSysId चयन ori.ExB4Taxes में) .DefaultIfEmpty (0) .sum(); – Developer

+0

@DmitryBychenko मैंने सोचा था कि इंडेंटिंग का उद्देश्य उद्देश्य सी के लिए विशिष्ट था। अब मैं दुखी हूं। – Rawling

+0

@ राउलिंग 9: इस प्रकार का इंडेंटेशन एसक्यूएल में विशिष्ट है (जो लिंक प्रश्न में अनुकरण करता है)। मेरे लिए रिक्त स्थान जोड़ने का यही कारण था। –

उत्तर

23

आप क्वेरी के अंदर decimal? को ori.ExB4Taxes कास्ट करने के लिए की जरूरत है।

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

आपको क्वेरी की शुरुआत में केवल 1 और पेंटिचेस जोड़ने की आवश्यकता है इसके अलावा यह सही काम कर रहा है। धन्यवाद। – Developer

संबंधित मुद्दे