2011-11-03 6 views
6

मैं निम्न क्वेरीLinq एक के रूप में लैम्ब्डा राशि के साथ SQL के जहां हालत

from p in _context.Products 
where p.Purchases.Sum(item => item.CCAmount) > 0 && p.Purchases.Sum(item => item.CCAmount) > p.PayOuts.Sum((item => item.AmountPaid) 
select p; 

मूल रूप से मैं सभी उत्पादों 0 से अधिक एक अभिव्यक्त खरीद राशि और जिसका अभिव्यक्त खरीद राशि से अधिक है है कि प्राप्त करने का प्रयास कर रहा हूँ है हमने जो राशि चुकाई है (हम अन्य लोगों की ओर से उत्पादों को बेच रहे हैं और उन्हें पूर्ण या अंश भुगतान में भुगतान करते हैं)। समस्या यह है कि यदि किसी विशेष उत्पाद के लिए पेआउट तालिका में कोई प्रविष्टियां नहीं हैं तो वह उत्पाद परिणामी सूची में प्रकट नहीं होता है। हालांकि अगर मैं पेआउट टेबल में पेआउट डालता हूं तो वह उत्पाद उत्पाद सूची में दिखाई देगा। इसका लगभग एक खाली संग्रह पर योग का उपयोग करने का मूल्यांकन नहीं किया जाएगा क्योंकि कोई उम्मीद करेगा कि मैं 0 के रूप में 0 हूं। क्या मुझे यहां कुछ याद आ रहा है?

आपकी मदद के लिए धन्यवाद।

+0

उत्पन्न एसक्यूएल क्या है में लिखा? – svick

उत्तर

5

समस्या यह है कि एसक्यूएल में null देता है यदि योग के लिए कोई रिकॉर्ड नहीं है।

आपको थोड़ा धोखा देने की आवश्यकता है।

प्रयास करें:

((int?)p.PayOuts.Sum(item => item.AmountPaid)).GetValueOrDefault() 

या थोड़ा अलग तरह से

((int?)p.PayOuts.Sum(item => item.AmountPaid) ?? 0) 
+0

+1; लेकिन मुझे लगता है कि बाहरी सी # खुश करने के लिए आपको अभी भी दूसरे मामले के लिए कलाकारों की जरूरत होगी ...? –

+0

@ MerlynMorgan-ग्राहम, आप सही हैं। –

+0

मदद के लिए धन्यवाद, पूरी तरह से काम करता है। – Peuge