2010-03-02 10 views
8

मैं एक ऐसी विधि तैयार कर रहा हूं जो पूरे महीने एकत्रित योग एकत्रित करे। समस्या यह है कि किसी दिए गए महीने में कुछ वस्तुओं के लिए शुल्क नहीं हो सकता है, इसलिए कोई पंक्तियां वापस नहीं की जाएंगी।लिंक से एसक्यूएल योग के साथ कोई रिकॉर्ड नहीं

मैं देख सकता हूँ कि यह कैसे कोई डेटा के साथ त्रुटि होगा:

double fuelCost = (double)(from a in db.EquipmentFuelLogs 
          where a.wdEquipmentMainGeneralOID == vehicleKey &&  
           (monthBeginDate < a.Date1 && a.Date1 < monthEndDate) 
          select a.TotalCost).Sum(); 

सबसे अच्छा तरीका है कि महीने के लिए कोई ईंधन लेनदेन का पता लगाने और 0 के लिए ईंधन की लागत निर्धारित करने के लिए क्या है? बस कोशिश करने की कोशिश करो? This article समस्या की बात की लेकिन कोई समाधान नहीं।

+1

देख http://stackoverflow.com/a/2456670/463425 .Select (एक => (डबल) a.TotalCost?) .sum(); – tkerwood

उत्तर

-10

मैंने त्रुटि को पकड़ने के लिए एक पकड़ जोड़ा। मुझे कभी भी एक अलग समाधान नहीं मिला।

15

समस्या यह है कि जहां कोई अनुक्रम नहीं लौटा रहा है, वहां योग काम नहीं कर सकता है, हालांकि यदि आप .DefaultIfEmpty का उपयोग करते हैं तो यह ठीक काम करता है।

decimal? orderValue = 
    orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost); 

उम्मीद है कि इससे मदद मिलती है।

+0

अगली बार मुझे यह करने की ज़रूरत है। –

+3

लिंक से एसक्यूएल के साथ काम नहीं करता है – jeromeyers

5

मैं समाधान किया गया:

decimal orderValue = orders.Where(ee => ee.Name == "SomeName").Sum(s => (decimal?)s.OrderCost)??0; 
संबंधित मुद्दे